{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "06a64360-cc2c-4bf2-88e3-36367cd57332",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:__main__:Iniciando processamento de: Regulamento_Aprovado_2019.pdf\n",
      "INFO:__main__:Tentando extração com PyMuPDF...\n",
      "INFO:__main__:Qualidade do texto extraído com PyMuPDF: 0.90\n",
      "INFO:__main__:Tentando extração com pdfplumber...\n",
      "INFO:__main__:Qualidade do texto extraído com pdfplumber: 0.91\n",
      "INFO:__main__:Texto extraído com sucesso (37981 caracteres).\n",
      "INFO:__main__:Idioma detectado: portuguese\n",
      "INFO:__main__:Padrões de erro mais comuns detectados: [('hyphenated_word', 2)]\n",
      "INFO:__main__:Processando com a biblioteca Docling...\n",
      "INFO:docling.document_converter:Going to convert document batch...\n",
      "INFO:docling.document_converter:Initializing pipeline for SimplePipeline with options hash 4cc01982ae99b46a2a63fcda46c47c35\n",
      "INFO:docling.pipeline.base_pipeline:Processing document tmpo2qiiivw.md\n",
      "INFO:docling.document_converter:Finished converting document tmpo2qiiivw.md in 0.22 sec.\n",
      "INFO:__main__:Documento processado e salvo em: processed_documents_functional/Regulamento_Aprovado_2019.md\n",
      "INFO:__main__:MD5 do conteúdo final: 84343e0395491190ac25c4518970f34c\n",
      "INFO:__main__:Processamento de Regulamento_Aprovado_2019.pdf concluído.\n",
      "==================================================\n"
     ]
    }
   ],
   "source": [
    "import re\n",
    "import logging\n",
    "import os\n",
    "import fitz  # PyMuPDF\n",
    "import pdfplumber\n",
    "from unidecode import unidecode\n",
    "import chardet\n",
    "from collections import Counter\n",
    "import hashlib\n",
    "import tempfile\n",
    "# A biblioteca 'docling' é uma dependência externa.\n",
    "# Certifique-se de que ela está instalada: pip install docling\n",
    "from docling.document_converter import DocumentConverter\n",
    "\n",
    "# Configuração avançada de logging para registrar saídas em arquivo e no console.\n",
    "logging.basicConfig(\n",
    "    level=logging.INFO,\n",
    "    format='%(asctime)s - %(levelname)s - %(message)s',\n",
    "    handlers=[\n",
    "        logging.FileHandler(\"functional_pdf_processor.log\", mode='w'),\n",
    "        logging.StreamHandler()\n",
    "    ]\n",
    ")\n",
    "logger = logging.getLogger(__name__)\n",
    "\n",
    "# --- Funções de Avaliação e Extração de Texto ---\n",
    "\n",
    "def evaluate_text_quality(text: str) -> float:\n",
    "    \"\"\"Avalia a qualidade do texto extraído com base em métricas como caracteres válidos e espaços.\"\"\"\n",
    "    text_len = len(text)\n",
    "    if text_len < 100:\n",
    "        return 0.0\n",
    "\n",
    "    valid_chars = sum(1 for c in text if c.isalnum() or c.isspace() or c in ',.;:!?()[]{}@#$%&*_+-=/')\n",
    "    valid_ratio = valid_chars / text_len\n",
    "\n",
    "    space_ratio = text.count(' ') / text_len\n",
    "    space_score = 0.1 if 0.1 < space_ratio < 0.3 else 0\n",
    "\n",
    "    problem_chars = sum(text.count(char) for char in ['�', '\\x00', '\\ufffd'])\n",
    "    problem_ratio = problem_chars / text_len\n",
    "    problem_penalty = 1 - min(problem_ratio * 10, 1)\n",
    "\n",
    "    score = (valid_ratio * 0.7) + (space_score * 0.1) + (problem_penalty * 0.2)\n",
    "    return score\n",
    "\n",
    "def extract_with_fitz(file_path: str) -> str:\n",
    "    \"\"\"Extrai texto usando PyMuPDF (fitz).\"\"\"\n",
    "    try:\n",
    "        with fitz.open(file_path) as doc:\n",
    "            return \"\".join(page.get_text(\"text\", sort=True) + \"\\n\" for page in doc)\n",
    "    except Exception as e:\n",
    "        logger.error(f\"Falha na extração com PyMuPDF: {e}\")\n",
    "        return \"\"\n",
    "\n",
    "def extract_with_pdfplumber(file_path: str) -> str:\n",
    "    \"\"\"Extrai texto usando pdfplumber.\"\"\"\n",
    "    try:\n",
    "        with pdfplumber.open(file_path) as pdf:\n",
    "            text = \"\"\n",
    "            for page in pdf.pages:\n",
    "                page_text = page.extract_text()\n",
    "                if page_text:\n",
    "                    text += page_text + \"\\n\"\n",
    "            return text\n",
    "    except Exception as e:\n",
    "        logger.error(f\"Falha na extração com pdfplumber: {e}\")\n",
    "        return \"\"\n",
    "\n",
    "def extract_best_text(file_path: str) -> str:\n",
    "    \"\"\"Tenta extrair texto com múltiplos métodos e escolhe o melhor resultado.\"\"\"\n",
    "    methods = {\"PyMuPDF\": extract_with_fitz, \"pdfplumber\": extract_with_pdfplumber}\n",
    "    best_text = \"\"\n",
    "    best_score = -1.0\n",
    "    \n",
    "    for name, method_func in methods.items():\n",
    "        logger.info(f\"Tentando extração com {name}...\")\n",
    "        text = method_func(file_path)\n",
    "        if not text:\n",
    "            logger.warning(f\"{name} não retornou texto.\")\n",
    "            continue\n",
    "        \n",
    "        score = evaluate_text_quality(text)\n",
    "        logger.info(f\"Qualidade do texto extraído com {name}: {score:.2f}\")\n",
    "\n",
    "        if score > best_score:\n",
    "            best_text = text\n",
    "            best_score = score\n",
    "            \n",
    "    if not best_text:\n",
    "        logger.error(\"Todas as técnicas de extração de texto falharam.\")\n",
    "    \n",
    "    return best_text\n",
    "\n",
    "# --- Funções de Limpeza, Correção e Formatação ---\n",
    "\n",
    "def detect_language(text: str) -> str:\n",
    "    \"\"\"Detecta o idioma principal do texto (português ou inglês).\"\"\"\n",
    "    sample_text = text[:5000].lower()\n",
    "    pt_indicators = sum(sample_text.count(word) for word in [' de ', ' a ', ' o ', ' que ', ' e '])\n",
    "    en_indicators = sum(sample_text.count(word) for word in [' the ', ' and ', ' of ', ' to ', ' in '])\n",
    "    \n",
    "    if pt_indicators > en_indicators * 1.2:\n",
    "        return \"portuguese\"\n",
    "    elif en_indicators > pt_indicators * 1.2:\n",
    "        return \"english\"\n",
    "    return \"unknown\"\n",
    "\n",
    "def analyze_errors(text: str) -> tuple[dict, Counter]:\n",
    "    \"\"\"Analisa o texto em busca de erros de codificação e retorna um mapa de correções.\"\"\"\n",
    "    error_patterns = Counter()\n",
    "    correction_map = {}\n",
    "    \n",
    "    common_fixes = {\n",
    "        'Ã§': 'ç', 'Ã£': 'ã', 'Ã¡': 'á', 'Ã©': 'é', 'Ã³': 'ó', 'Ãµ': 'õ', \n",
    "        'Ãª': 'ê', 'Ã¢': 'â', 'Ã ': 'à', 'Ãº': 'ú', 'Ã­': 'í', 'PîS': 'Pós',\n",
    "        'Gradua,ÌO': 'Graduação', 'CAPêTULO': 'CAPÍTULO', 'â€œ': '\"', \n",
    "        'â€': '\"', 'â€™': \"'\", 'â€“': '-'\n",
    "    }\n",
    "    \n",
    "    for error, fix in common_fixes.items():\n",
    "        if error in text:\n",
    "            count = text.count(error)\n",
    "            error_patterns[error] += count\n",
    "            correction_map[error] = fix\n",
    "\n",
    "    hyphenated = re.findall(r'\\b\\w+-\\s*\\n\\s*\\w+\\b', text)\n",
    "    error_patterns[\"hyphenated_word\"] += len(hyphenated)\n",
    "    \n",
    "    logger.info(f\"Padrões de erro mais comuns detectados: {error_patterns.most_common(5)}\")\n",
    "    return correction_map, error_patterns\n",
    "\n",
    "def auto_correct(text: str, correction_map: dict, language: str) -> str:\n",
    "    \"\"\"Aplica as correções identificadas e outras limpezas gerais.\"\"\"\n",
    "    for error, correction in correction_map.items():\n",
    "        text = text.replace(error, correction)\n",
    "    \n",
    "    text = re.sub(r'(\\b\\w+)-\\s*\\n\\s*(\\w+\\b)', r'\\1\\2', text, flags=re.IGNORECASE)\n",
    "    text = re.sub(r'[ \\t]+', ' ', text)\n",
    "    \n",
    "    if language == \"portuguese\":\n",
    "        text = re.sub(r'([a-zà-ÿ])\\.\\s+([A-ZÀ-Ÿ])', r'\\1.\\n\\n\\2', text)\n",
    "        \n",
    "    return text\n",
    "\n",
    "def enhance_structure(text: str) -> str:\n",
    "    \"\"\"Converte elementos estruturais do texto em sintaxe Markdown.\"\"\"\n",
    "    text = re.sub(r'\\n\\s*(CAP[ÍI]TULO|CHAPTER)\\s+([IVXLCDM\\d]+)[\\s.-]*\\n', r'\\n## \\1 \\2\\n', text, flags=re.IGNORECASE)\n",
    "    text = re.sub(r'\\n\\s*(\\d+(\\.\\d+)+)[\\s.-]+([^\\n]+)', r'\\n### \\1 \\3', text)\n",
    "    text = re.sub(r'\\n\\s*([-*•])\\s+', r'\\n- ', text)\n",
    "    return text\n",
    "\n",
    "def sanitize_text(text: str) -> str:\n",
    "    \"\"\"Remove caracteres inválidos e de controle.\"\"\"\n",
    "    sanitized = re.sub(r'[\\x00-\\x1F\\x7F-\\x9F]', '', text)\n",
    "    replacements = {'\\ufffd': '', '\\xad': '', '\\u200b': ''}\n",
    "    for char, replacement in replacements.items():\n",
    "        sanitized = sanitized.replace(char, replacement)\n",
    "    sanitized = re.sub(r'\\n{3,}', '\\n\\n', sanitized)\n",
    "    return sanitized.strip()\n",
    "\n",
    "def process_with_docling(text: str) -> str:\n",
    "    \"\"\"Processa o texto com a biblioteca Docling para formatação final.\"\"\"\n",
    "    tmp_path = \"\"\n",
    "    try:\n",
    "        sanitized_text = sanitize_text(text)\n",
    "        with tempfile.NamedTemporaryFile(mode='w', suffix='.md', delete=False, encoding='utf-8') as tmp:\n",
    "            tmp.write(sanitized_text)\n",
    "            tmp_path = tmp.name\n",
    "        \n",
    "        logger.info(\"Processando com a biblioteca Docling...\")\n",
    "        converter = DocumentConverter()\n",
    "        result = converter.convert(tmp_path)\n",
    "        return result.document.export_to_markdown()\n",
    "    except Exception as e:\n",
    "        logger.error(f\"Falha no processamento com Docling: {e}. Retornando texto pré-processado.\")\n",
    "        return text\n",
    "    finally:\n",
    "        if tmp_path and os.path.exists(tmp_path):\n",
    "            os.unlink(tmp_path)\n",
    "\n",
    "# --- Orquestrador Principal ---\n",
    "\n",
    "def process_pdf_file(input_path: str, output_dir: str):\n",
    "    \"\"\"\n",
    "    Executa todo o pipeline de processamento para um único arquivo PDF.\n",
    "    \"\"\"\n",
    "    logger.info(f\"Iniciando processamento de: {os.path.basename(input_path)}\")\n",
    "    if not os.path.exists(input_path):\n",
    "        logger.error(f\"Arquivo não encontrado: {input_path}\")\n",
    "        return\n",
    "\n",
    "    # 1. Extração\n",
    "    raw_text = extract_best_text(input_path)\n",
    "    if not raw_text:\n",
    "        logger.error(f\"Não foi possível extrair texto de {input_path}. Abortando.\")\n",
    "        return\n",
    "    logger.info(f\"Texto extraído com sucesso ({len(raw_text)} caracteres).\")\n",
    "\n",
    "    # 2. Análise\n",
    "    language = detect_language(raw_text)\n",
    "    logger.info(f\"Idioma detectado: {language}\")\n",
    "    correction_map, _ = analyze_errors(raw_text)\n",
    "\n",
    "    # 3. Correção e Formatação\n",
    "    corrected_text = auto_correct(raw_text, correction_map, language)\n",
    "    structured_text = enhance_structure(corrected_text)\n",
    "    \n",
    "    # 4. Processamento Final e Saída\n",
    "    final_text = process_with_docling(structured_text)\n",
    "\n",
    "    base_name = os.path.splitext(os.path.basename(input_path))[0]\n",
    "    output_path = os.path.join(output_dir, f\"{base_name}.md\")\n",
    "    \n",
    "    try:\n",
    "        with open(output_path, \"w\", encoding=\"utf-8\") as f:\n",
    "            f.write(final_text)\n",
    "        logger.info(f\"Documento processado e salvo em: {output_path}\")\n",
    "        \n",
    "        text_hash = hashlib.md5(final_text.encode()).hexdigest()\n",
    "        logger.info(f\"MD5 do conteúdo final: {text_hash}\")\n",
    "    except IOError as e:\n",
    "        logger.error(f\"Falha ao salvar o arquivo de saída {output_path}: {e}\")\n",
    "\n",
    "def main():\n",
    "    \"\"\"Função principal para configurar e executar o processamento.\"\"\"\n",
    "    PDF_FILES = ['Regulamento_Aprovado_2019.pdf'] # Coloque seus arquivos aqui\n",
    "    OUTPUT_DIR = \"processed_documents_functional\"\n",
    "    \n",
    "    os.makedirs(OUTPUT_DIR, exist_ok=True)\n",
    "    \n",
    "    for pdf_file in PDF_FILES:\n",
    "        if not os.path.isfile(pdf_file):\n",
    "            logger.error(f\"Arquivo '{pdf_file}' não encontrado. Pulando.\")\n",
    "            continue\n",
    "        \n",
    "        process_pdf_file(pdf_file, OUTPUT_DIR)\n",
    "        logger.info(f\"Processamento de {pdf_file} concluído.\\n\" + \"=\"*50)\n",
    "\n",
    "if __name__ == \"__main__\":\n",
    "    main()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "434e798b-067a-486b-8d55-259e8bba1f41",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:__main__:[PDF] Processando: Regulamento_Aprovado_2019.pdf\n",
      "INFO:__main__:[PDF] PyMuPDF - Score: 0.97\n",
      "INFO:__main__:[PDF] pdfplumber - Score: 0.98\n",
      "INFO:__main__:[PDF] Documento salvo: documentos_processados/Regulamento_Aprovado_2019.md\n",
      "INFO:__main__:Documento carregado: Regulamento_Aprovado_2019.md\n",
      "INFO:__main__:Carregando modelo: sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2\n",
      "INFO:sentence_transformers.SentenceTransformer:Use pytorch device_name: cpu\n",
      "INFO:sentence_transformers.SentenceTransformer:Load pretrained SentenceTransformer: sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2\n",
      "Batches: 100%|████████████████████████████████████| 1/1 [00:00<00:00,  6.23it/s]\n",
      "INFO:sentence_transformers.SentenceTransformer:Use pytorch device_name: cpu\n",
      "INFO:sentence_transformers.SentenceTransformer:Load pretrained SentenceTransformer: sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2\n",
      "Batches: 100%|████████████████████████████████████| 1/1 [00:00<00:00, 11.08it/s]\n",
      "INFO:__main__:\n",
      "Similaridade dos documentos:\n",
      "INFO:__main__:✅ Regulamento_Aprovado_2019.md: 0.4067\n",
      "WARNING:__main__:Contexto truncado (38135 > 12000 chars)\n",
      "INFO:__main__:Consultando LLM: deepseek-r1:14b\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "================================================================================\n",
      "PERGUNTA: Quais são os regulamentos para o programa de Pós-Graduação?\n",
      "================================================================================\n",
      "<think>\n",
      "Okay, so the user is asking about the regulations for a postgraduate program. They provided a detailed document that seems to outline the rules and structure of the Programa de Pós-Graduação (PPGTE) at the Universidade Federal do Paraná, specifically the Curitiba campus.\n",
      "\n",
      "First, I need to parse through the information given in the document to identify the key regulations. The document is structured into chapters, each covering different aspects of the program. \n",
      "\n",
      "Starting with Chapter II, which seems to focus on the teaching staff (docentes), it outlines the responsibilities and regulations for permanent teachers, collaborators, and visiting professors. It mentions that permanent teachers must contribute to research projects, teaching activities, and student orientation, among other duties.\n",
      "\n",
      "Moving to Chapter III, this part deals with the administrative structure of the program. It talks about the coordination of the program, the composition of the collegiate body, decision-making processes, and the roles and responsibilities of the coordinator and substitute coordinator. There are specific regulations regarding how decisions are made, including voting procedures and quorum requirements.\n",
      "\n",
      "Chapter IV, although cut off in the provided text, would likely cover student-related aspects like admission criteria, academic conduct, thesis/dissertation guidelines, and graduation requirements. This is crucial for understanding the regulations governing students within the program.\n",
      "\n",
      "Additionally, there's a mention of the program being evaluated by CAPES, which sets quality standards for higher education programs in Brazil. The document also references the need to comply with legal frameworks like the Lei da Inovação (Law of Innovation) and the Marco Regulatório das Startups (Regulatory Framework for Startups), indicating that there are specific regulations around intellectual property and technology transfer.\n",
      "\n",
      "I should structure the response by categorizing these regulations into sections such as Academic Staff, Administrative Structure, Student Regulations, External Evaluation, and Legal Compliance. This will make it easier for the user to navigate through the information.\n",
      "\n",
      "For each category, I'll extract the key points from the document. For example, under Academic Staff, I'll note the responsibilities of permanent teachers, collaborators, and visiting professors. Under Administrative Structure, I'll outline the roles of the coordinator and the collegiate body, including decision-making processes.\n",
      "\n",
      "I should also highlight any specific procedures or requirements, such as the need for a majority vote in decisions by the collegiate body or the requirement to submit an annual activity report. Mentioning external evaluations like those conducted by CAPES adds context about the program's quality assurance.\n",
      "\n",
      "Finally, I'll ensure that the response is clear and organized, providing a comprehensive overview without being overly detailed. This way, the user can quickly grasp the main regulations governing the postgraduate program.\n",
      "</think>\n",
      "\n",
      "Para responder à pergunta \"Quais são os regulamentos para o programa de Pós-Graduação?\", vamos destacar as principais normas e regulamentos mencionados no documento fornecido:\n",
      "\n",
      "### 1. **Regulamentos Gerais**\n",
      "   - O Programa de Pós-Graduação (PPGTE) é regido pelo presente regulamento, além dos documentos institucionais da Universidade Federal do Paraná (UFPR) e das diretrizes da Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES).\n",
      "   - As decisões acadêmicas e administrativas devem ser tomadas em consonância com os princípios da autonomia universitária e do pluralismo cultural.\n",
      "\n",
      "### 2. **Docentes**\n",
      "   - **Docentes Permanentes**: Devem contribuir com atividades de pesquisa, ensino, orientação de alunos, produção intelectual e participação em comissões.\n",
      "   - **Docentes Colaboradores**: Suas atividades são definidas em resolução específica, considerando os critérios da área de avaliação da CAPES.\n",
      "   - **Docentes Visitantes**: Devem atuar conforme o Regulamento do Programa Professor Visitante da UFPR.\n",
      "\n",
      "### 3. **Estrutura Administrativa**\n",
      "   - O programa é coordenado por um(a) Coordenador(a), indicado(a) segundo o Regimento dos Câmpus.\n",
      "   - O Colegiado é composto pelo(a) Coordenador(a), demais docentes, representantes técnicos-administrativos e representação discente.\n",
      "   - As decisões do Colegiado são tomadas por maioria simples dos membros presentes, com direito a voto de qualidade do(a) Presidente.\n",
      "\n",
      "### 4. **Representação Discente**\n",
      "   - A Representação Discente é composta por dois alunos(as), um de mestrado e outro de doutorado, eleitos(a)s pelos(as) estudantes regulares.\n",
      "   - As eleições devem garantir suplentes para cada cargo.\n",
      "\n",
      "### 5. **Competências do Coordenador**\n",
      "   - Coordenação das atividades do Programa.\n",
      "   - Convocação e presidência de reuniões do Colegiado.\n",
      "   - Elaboração do orçamento, organização de horários de atividades, entre outras competências.\n",
      "\n",
      "### 6. **Processos Decisórios**\n",
      "   - As decisões sobre alterações de regulamentos ou resoluções devem ser aprovadas por pelo menos dois terços dos membros do Colegiado.\n",
      "   - Qualquer proposta de resolução ou alteração de regulamento deve ser discutida e votada em reunião específica.\n",
      "\n",
      "### 7. **Avaliação**\n",
      "   - O Programa é avaliado periodicamente pela CAPES, com a obrigatoriedade de enviar relatórios anuais de atividades.\n",
      "   - A produção intelectual dos docentes e alunos deve ser mantida atualizada e disponível para acesso público ou por solicitação.\n",
      "\n",
      "### 8. **Outras Considerações**\n",
      "   - O Programa deve cumprir com as diretrizes legais, incluindo a Lei da Inovação (Lei nº 10.973/2004) e o Marco Regulatório das Startups.\n",
      "   - As atividades devem ser realizadas em consonância com os objetivos do Programa.\n",
      "\n",
      "Estas são as principais normas regulando o funcionamento do Programa de Pós-Graduação. Para mais detalhes, consulte o documento completo ou a Coordenação do PPGTE.\n",
      "================================================================================\n"
     ]
    }
   ],
   "source": [
    "import re\n",
    "import logging\n",
    "import os\n",
    "import fitz  # PyMuPDF\n",
    "import pdfplumber\n",
    "import requests\n",
    "from sentence_transformers import SentenceTransformer\n",
    "from sklearn.metrics.pairwise import cosine_similarity\n",
    "\n",
    "# ==============================================================================\n",
    "# 1. CONFIGURAÇÕES GERAIS\n",
    "# ==============================================================================\n",
    "# --- Arquivos de Entrada e Saída ---\n",
    "PDF_PATHS = ['Regulamento_Aprovado_2019.pdf']  # Coloque seus PDFs aqui\n",
    "MARKDOWN_OUTPUT_DIR = \"documentos_processados\"\n",
    "\n",
    "# --- Configuração do RAG ---\n",
    "USER_QUESTION = \"Quais são os regulamentos para o programa de Pós-Graduação?\"\n",
    "MODEL_EMBEDDING = 'sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2'\n",
    "OLLAMA_API_URL = \"http://10.20.50.50:11434/api/generate\"\n",
    "MODEL_LLM = \"deepseek-r1:14b\"\n",
    "THRESHOLD = 0.25\n",
    "MAX_CONTEXT_SIZE = 120000\n",
    "\n",
    "# ==============================================================================\n",
    "# 2. CONFIGURAÇÃO DE LOGGING\n",
    "# ==============================================================================\n",
    "logging.basicConfig(\n",
    "    level=logging.INFO,\n",
    "    format='%(asctime)s - %(levelname)s - %(message)s',\n",
    "    handlers=[\n",
    "        logging.FileHandler(\"rag_system.log\", mode='w'),\n",
    "        logging.StreamHandler()\n",
    "    ]\n",
    ")\n",
    "logger = logging.getLogger(__name__)\n",
    "\n",
    "# ==============================================================================\n",
    "# 3. FUNÇÕES DE PROCESSAMENTO DE PDF (OTIMIZADAS)\n",
    "# ==============================================================================\n",
    "\n",
    "def evaluate_text_quality(text: str) -> float:\n",
    "    if len(text) < 100: \n",
    "        return 0.0\n",
    "    valid_chars = sum(1 for c in text if c.isalnum() or c in ' ,.;:!?()[]{}@#$%&*_+-=/')\n",
    "    return valid_chars / len(text)\n",
    "\n",
    "def extract_with_fitz(file_path: str) -> str:\n",
    "    try:\n",
    "        with fitz.open(file_path) as doc:\n",
    "            return \"\\n\".join(page.get_text(\"text\", sort=True) for page in doc)\n",
    "    except Exception as e:\n",
    "        logger.error(f\"[PDF] Falha no PyMuPDF: {str(e)}\")\n",
    "        return \"\"\n",
    "\n",
    "def extract_with_pdfplumber(file_path: str) -> str:\n",
    "    try:\n",
    "        with pdfplumber.open(file_path) as pdf:\n",
    "            return \"\\n\".join(page.extract_text() for page in pdf.pages if page.extract_text())\n",
    "    except Exception as e:\n",
    "        logger.error(f\"[PDF] Falha no pdfplumber: {str(e)}\")\n",
    "        return \"\"\n",
    "\n",
    "def extract_best_text(file_path: str) -> str:\n",
    "    methods = [\n",
    "        (\"PyMuPDF\", extract_with_fitz),\n",
    "        (\"pdfplumber\", extract_with_pdfplumber)\n",
    "    ]\n",
    "    \n",
    "    best_text, best_score = \"\", -1\n",
    "    for name, method in methods:\n",
    "        text = method(file_path)\n",
    "        if not text:\n",
    "            continue\n",
    "            \n",
    "        score = evaluate_text_quality(text)\n",
    "        logger.info(f\"[PDF] {name} - Score: {score:.2f}\")\n",
    "        if score > best_score:\n",
    "            best_text, best_score = text, score\n",
    "    \n",
    "    return best_text if best_score > 0.3 else \"\"\n",
    "\n",
    "def enhance_structure(text: str) -> str:\n",
    "    # Padronização de cabeçalhos\n",
    "    text = re.sub(r'\\n\\s*(CAP[ÍI]TULO|SEÇÃO|ARTIGO)\\s+([IVXLCDM\\d]+)[\\s.-]*\\n', \n",
    "                 r'\\n## \\1 \\2\\n', text, flags=re.IGNORECASE)\n",
    "    \n",
    "    # Identificação de subseções\n",
    "    text = re.sub(r'\\n\\s*(\\d+[\\.\\d]*)\\s+([^\\n]+)', r'\\n### \\1 \\2', text)\n",
    "    \n",
    "    # Listas\n",
    "    text = re.sub(r'\\n\\s*([•▪‣➢])\\s*', r'\\n- ', text)\n",
    "    \n",
    "    # Espaçamento entre parágrafos\n",
    "    text = re.sub(r'\\n{3,}', '\\n\\n', text)\n",
    "    \n",
    "    return text.strip()\n",
    "\n",
    "def process_pdf_to_markdown(file_path: str, output_dir: str) -> str:\n",
    "    base_name = os.path.splitext(os.path.basename(file_path))[0]\n",
    "    output_path = os.path.join(output_dir, f\"{base_name}.md\")\n",
    "    \n",
    "    logger.info(f\"[PDF] Processando: {os.path.basename(file_path)}\")\n",
    "    raw_text = extract_best_text(file_path)\n",
    "    \n",
    "    if not raw_text:\n",
    "        logger.error(f\"[PDF] Falha na extração de texto: {file_path}\")\n",
    "        return \"\"\n",
    "    \n",
    "    structured_text = enhance_structure(raw_text)\n",
    "    \n",
    "    try:\n",
    "        os.makedirs(output_dir, exist_ok=True)\n",
    "        with open(output_path, \"w\", encoding=\"utf-8\") as f:\n",
    "            f.write(structured_text)\n",
    "        logger.info(f\"[PDF] Documento salvo: {output_path}\")\n",
    "        return output_path\n",
    "    except Exception as e:\n",
    "        logger.error(f\"[PDF] Erro ao salvar Markdown: {str(e)}\")\n",
    "        return \"\"\n",
    "\n",
    "# ==============================================================================\n",
    "# 4. SISTEMA RAG OTIMIZADO\n",
    "# ==============================================================================\n",
    "\n",
    "def load_documents():\n",
    "    \"\"\"Carrega todos os documentos processados em memória\"\"\"\n",
    "    documents = []\n",
    "    document_paths = []\n",
    "    \n",
    "    for pdf_path in PDF_PATHS:\n",
    "        if not os.path.exists(pdf_path):\n",
    "            logger.error(f\"Arquivo não encontrado: {pdf_path}\")\n",
    "            continue\n",
    "            \n",
    "        md_path = process_pdf_to_markdown(pdf_path, MARKDOWN_OUTPUT_DIR)\n",
    "        if not md_path or not os.path.exists(md_path):\n",
    "            continue\n",
    "            \n",
    "        try:\n",
    "            with open(md_path, \"r\", encoding=\"utf-8\") as f:\n",
    "                content = f.read()\n",
    "                documents.append(content)\n",
    "                document_paths.append(md_path)\n",
    "                logger.info(f\"Documento carregado: {os.path.basename(md_path)}\")\n",
    "        except Exception as e:\n",
    "            logger.error(f\"Erro ao ler documento: {str(e)}\")\n",
    "    \n",
    "    return documents, document_paths\n",
    "\n",
    "def get_embeddings(documents: list[str]):\n",
    "    \"\"\"Gera embeddings para todos os documentos\"\"\"\n",
    "    try:\n",
    "        logger.info(f\"Carregando modelo: {MODEL_EMBEDDING}\")\n",
    "        model = SentenceTransformer(MODEL_EMBEDDING)\n",
    "        return model.encode(documents)\n",
    "    except Exception as e:\n",
    "        logger.error(f\"Falha no embedding: {str(e)}\")\n",
    "        raise\n",
    "\n",
    "def rag_query(question: str, documents: list[str], document_paths: list[str], embeddings):\n",
    "    \"\"\"Executa todo o pipeline RAG\"\"\"\n",
    "    try:\n",
    "        # 1. Embedding da pergunta\n",
    "        embedding_model = SentenceTransformer(MODEL_EMBEDDING)\n",
    "        question_embedding = embedding_model.encode([question])[0]\n",
    "        \n",
    "        # 2. Cálculo de similaridade\n",
    "        similarities = cosine_similarity([question_embedding], embeddings)[0]\n",
    "        \n",
    "        # 3. Seleção de contexto\n",
    "        context = \"\"\n",
    "        logger.info(\"\\nSimilaridade dos documentos:\")\n",
    "        for i, (path, sim) in enumerate(zip(document_paths, similarities)):\n",
    "            status = \"✅\" if sim > THRESHOLD else \"❌\"\n",
    "            logger.info(f\"{status} {os.path.basename(path)}: {sim:.4f}\")\n",
    "            \n",
    "            if sim > THRESHOLD:\n",
    "                context += f\"\\n--- DOCUMENTO: {os.path.basename(path)} ---\\n\"\n",
    "                context += documents[i] + \"\\n\\n\"\n",
    "        \n",
    "        # 4. Truncagem segura\n",
    "        if len(context) > MAX_CONTEXT_SIZE:\n",
    "            logger.warning(f\"Contexto truncado ({len(context)} > {MAX_CONTEXT_SIZE} chars)\")\n",
    "            context = context[:MAX_CONTEXT_SIZE]\n",
    "        \n",
    "        # 5. Construção do prompt\n",
    "        prompt = f\"\"\"<|im_start|>system\n",
    "Você é um assistente acadêmico que responde perguntas baseado EXCLUSIVAMENTE nos documentos fornecidos. \n",
    "Se a informação não estiver contida nos documentos, responda claramente que não possui os dados necessários.<|im_end|>\n",
    "<|im_start|>context\n",
    "{context}<|im_end|>\n",
    "<|im_start|>user\n",
    "Pergunta: {question}<|im_end|>\n",
    "<|im_start|>assistant\n",
    "Resposta:\"\"\"\n",
    "        \n",
    "        # 6. Chamada à API\n",
    "        payload = {\n",
    "            \"model\": MODEL_LLM,\n",
    "            \"prompt\": prompt,\n",
    "            \"stream\": False,\n",
    "            \"options\": {\n",
    "                \"temperature\": 0.3,\n",
    "                \"top_p\": 0.9,\n",
    "                \"num_ctx\": 4096\n",
    "            }\n",
    "        }\n",
    "        \n",
    "        logger.info(f\"Consultando LLM: {MODEL_LLM}\")\n",
    "        response = requests.post(\n",
    "            OLLAMA_API_URL,\n",
    "            json=payload,\n",
    "            headers={\"Content-Type\": \"application/json\"},\n",
    "            timeout=180\n",
    "        )\n",
    "        response.raise_for_status()\n",
    "        \n",
    "        # 7. Processamento da resposta\n",
    "        raw_response = response.json().get('response', '')\n",
    "        answer = raw_response.split(\"<|im_end|>\")[0].replace(\"Resposta:\", \"\").strip()\n",
    "        \n",
    "        # 8. Exibição do resultado\n",
    "        print(\"\\n\" + \"=\"*80)\n",
    "        print(f\"PERGUNTA: {question}\")\n",
    "        print(\"=\"*80)\n",
    "        print(answer)\n",
    "        print(\"=\"*80)\n",
    "        \n",
    "    except Exception as e:\n",
    "        logger.error(f\"Erro no RAG: {str(e)}\")\n",
    "\n",
    "# ==============================================================================\n",
    "# 5. EXECUÇÃO PRINCIPAL\n",
    "# ==============================================================================\n",
    "\n",
    "if __name__ == \"__main__\":\n",
    "    # Etapa 1: Processar e carregar documentos\n",
    "    documents, document_paths = load_documents()\n",
    "    if not documents:\n",
    "        logger.error(\"Nenhum documento válido carregado. Abortando.\")\n",
    "        exit(1)\n",
    "    \n",
    "    # Etapa 2: Gerar embeddings\n",
    "    try:\n",
    "        embeddings = get_embeddings(documents)\n",
    "    except Exception:\n",
    "        exit(1)\n",
    "    \n",
    "    # Etapa 3: Executar consulta RAG\n",
    "    rag_query(USER_QUESTION, documents, document_paths, embeddings)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "e0424e6a-7e41-43e7-8da6-b4bd93e4d4a3",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:sentence_transformers.SentenceTransformer:Use pytorch device_name: cpu\n",
      "INFO:sentence_transformers.SentenceTransformer:Load pretrained SentenceTransformer: sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2\n",
      "Batches: 100%|████████████████████████████████████| 1/1 [00:00<00:00,  5.69it/s]\n",
      "Batches: 100%|████████████████████████████████████| 1/1 [00:00<00:00, 15.95it/s]\n",
      "INFO:__main__:\n",
      "Similaridade dos documentos:\n",
      "INFO:__main__:Adicionando documento 1 ao contexto (similaridade: 0.2666)\n",
      "INFO:__main__:Consultando modelo LLM...\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "✅ Documento 1 (doc.pdf): 0.2666\n",
      "\n",
      "==================================================\n",
      "PERGUNTA: Quais são os regu?\n",
      "==================================================\n",
      "<think>\n",
      "Ok, o usuário começou a perguntar \"Quais são os regu?\" e parou no meio. Parece que ele estava tentando dizer \"quais são os regulamentos\" ou algo semelhante. Vendo o contexto fornecido, que é um edital de seleção para bolsistas de iniciação científica, posso inferir que ele está interessado nos requisitos ou regulamentos do processo seletivo.\n",
      "\n",
      "No documento, há várias seções relevantes. Primeiro, os pré-requisitos estão no item 4: o aluno deve estar matriculado a partir do 2º período em cursos de Ciências Exatas, Engenharias e Computação na UTFPR-Curitiba. Também não pode ser estagiário ou bolsista em outro programa federal.\n",
      "\n",
      "Outros requisitos incluem conhecimentos básicos nos conteúdos do Plano de Trabalho IC e disponibilidade de 20 horas semanais. Além disso, não pode ter parentesco até o terceiro grau com os membros do projeto.\n",
      "\n",
      "Os deveres dos bolsistas estão no item 5: dedicar-se às atividades, devolver benefícios indevidos, citar o apoio do CNPq em publicações, e apresentar relatórios periódicos.\n",
      "\n",
      "O período de inscrição é exclusivamente online via formulário disponível no site indicado. Os documentos necessários são o formulário preenchido, histórico escolar, currículo Lattes e autodeclaração racial se for o caso.\n",
      "\n",
      "A comissão de seleção avalia os candidatos baseando-se na documentação fornecida e outros critérios, priorizando mulheres em caso de empate.\n",
      "\n",
      "Portanto, para responder ao usuário, é essencial resumir essas informações de forma clara e organizada.\n",
      "</think>\n",
      "\n",
      "Para responder à pergunta \"Quais são os regulamentos?\", baseio-me no conteúdo do documento fornecido. Os requisitos e regulamentos principais para a seleção de bolsistas de Iniciação Científica (IC) estão listados abaixo:\n",
      "\n",
      "### 1. **Pré-requisitos para inscrição:**\n",
      "   - Estar regularmente matriculado(a) como estudante de graduação na UTFPR-Curitiba, no 2º período ou posterior, em cursos das áreas de Ciências Exatas, Engenharias e Computação.\n",
      "   - Não ser estagiário(a), não ter vínculo empregatício e não ser bolsista em outro programa do governo federal.\n",
      "   - Ter conhecimentos básicos nos conteúdos relacionados às atividades previstas no Plano de Trabalho IC.\n",
      "   - Disponibilidade para dedicar 20 horas semanais às atividades do projeto.\n",
      "   - Não ser cônjuge, companheiro(a) ou parente em linha reta, colateral ou por afinidade, até o terceiro grau, inclusive, dos(as) integrantes do Projeto Aprovado.\n",
      "\n",
      "### 2. **Deveres de Bolsista:**\n",
      "   - Dedicar-se às atividades previstas no projeto ou plano de trabalho aprovado pelo CNPq.\n",
      "   - Devolver ao CNPq eventuais benefícios pagos indevidamente.\n",
      "   - Citar o apoio do CNPq em publicações, conforme orientação.\n",
      "   - Apresentar relatórios periódicos das atividades realizadas.\n",
      "\n",
      "### 3. **Período e Locais de Inscrição:**\n",
      "   - As inscrições serão realizadas exclusivamente por meio de formulário online disponível no site da UTFPR-Curitiba.\n",
      "\n",
      "### 4. **Documentos para Inscrição:**\n",
      "   - Formulário de inscrição preenchido.\n",
      "   - Cópia digital do Histórico Escolar da Graduação.\n",
      "   - Currículo Lattes atualizado.\n",
      "   - Autodeclaração como pessoa negra ou indígena (quando for o caso).\n",
      "\n",
      "### 5. **Critérios de Seleção:**\n",
      "   - A análise será realizada por docentes da comissão de seleção, que pontuarão os quesitos descritos no Apêndice 1.\n",
      "   - Candidatos(as) que não entregarem a documentação completa serão desclassificados(as).\n",
      "   - Em caso de empate, terá preferência a candidata mulher (cis ou trans). Se persistir o empate, será considerada a pessoa com maior idade.\n",
      "\n",
      "Espero que isso responda à sua pergunta!\n",
      "==================================================\n"
     ]
    }
   ],
   "source": [
    "# 5. Modelo de embedding mais eficiente\n",
    "MODEL_EMBEDDING = 'sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2'\n",
    "OLLAMA_API_URL = \"http://10.20.50.50:11434/api/generate\"\n",
    "MODEL_LLM = \"deepseek-r1:14b\"\n",
    "\n",
    "# 6. Cache de embeddings\n",
    "try:\n",
    "    embedding_model = SentenceTransformer(MODEL_EMBEDDING)\n",
    "    embeddings_documentos = embedding_model.encode(documentos)\n",
    "except Exception as e:\n",
    "    logger.error(f\"Falha no modelo de embedding: {str(e)}\")\n",
    "    raise\n",
    "\n",
    "pergunta = \"Quais são os regu?\"\n",
    "try:\n",
    "    embedding_pergunta = embedding_model.encode([pergunta])[0]\n",
    "    similaridades = cosine_similarity([embedding_pergunta], embeddings_documentos)[0]\n",
    "except Exception as e:\n",
    "    logger.error(f\"Erro no cálculo de similaridade: {str(e)}\")\n",
    "    raise\n",
    "\n",
    "# 7. Análise de resultados aprimorada\n",
    "logger.info(\"\\nSimilaridade dos documentos:\")\n",
    "for i, (caminho, sim) in enumerate(zip(PDF_PATHS, similaridades)):\n",
    "    status = \"✅\" if sim > 0.25 else \"❌\"\n",
    "    print(f\"{status} Documento {i+1} ({caminho}): {sim:.4f}\")\n",
    "\n",
    "# 8. Threshold dinâmico e seleção múltipla\n",
    "THRESHOLD = 0.25\n",
    "contexto = \"\"\n",
    "for i, sim in enumerate(similaridades):\n",
    "    if sim > THRESHOLD:\n",
    "        logger.info(f\"Adicionando documento {i+1} ao contexto (similaridade: {sim:.4f})\")\n",
    "        contexto += f\"\\n--- DOCUMENTO {i+1} ({PDF_PATHS[i]}) ---\\n\"\n",
    "        contexto += documentos[i][:10000]  # Limita o tamanho do contexto\n",
    "        \n",
    "if not contexto:\n",
    "    raise SystemExit(\"Nenhum documento relevante para a consulta.\")\n",
    "\n",
    "# 9. Prompt otimizado e truncagem segura\n",
    "MAX_CONTEXT_SIZE = 12000  # Tokens aproximados\n",
    "if len(contexto) > MAX_CONTEXT_SIZE:\n",
    "    logger.warning(f\"Contexto truncado ({len(contexto)} > {MAX_CONTEXT_SIZE} caracteres)\")\n",
    "    contexto = contexto[:MAX_CONTEXT_SIZE]\n",
    "\n",
    "# 10. Formatação de prompt aprimorada\n",
    "prompt = f\"\"\"<|im_start|>system\n",
    "Você é um assistente acadêmico que responde perguntas baseado EXCLUSIVAMENTE nos documentos fornecidos. \n",
    "Se a informação não estiver contida nos documentos, responda claramente que não possui os dados necessários.<|im_end|>\n",
    "<|im_start|>context\n",
    "{contexto}\n",
    "<|im_end|>\n",
    "<|im_start|>user\n",
    "Pergunta: {pergunta}<|im_end|>\n",
    "<|im_start|>assistant\n",
    "Resposta:\"\"\"\n",
    "\n",
    "# 11. Configuração de requisição robusta\n",
    "payload = {\n",
    "    \"model\": MODEL_LLM,\n",
    "    \"prompt\": prompt,\n",
    "    \"stream\": False,\n",
    "    \"options\": {\n",
    "        \"temperature\": 0.3,\n",
    "        \"top_p\": 0.9,\n",
    "        \"num_ctx\": 4096  # Tamanho do contexto\n",
    "    }\n",
    "}\n",
    "\n",
    "try:\n",
    "    logger.info(\"Consultando modelo LLM...\")\n",
    "    response = requests.post(\n",
    "        OLLAMA_API_URL,\n",
    "        json=payload,\n",
    "        headers={\"Content-Type\": \"application/json\"},\n",
    "        timeout=120  # 2 minutos timeout\n",
    "    )\n",
    "    response.raise_for_status()\n",
    "    \n",
    "    resposta = response.json().get('response', '').strip()\n",
    "    # 12. Limpeza da resposta\n",
    "    resposta = resposta.split(\"<|im_end|>\")[0].strip()\n",
    "    resposta = resposta.replace(\"Resposta:\", \"\").strip()\n",
    "    \n",
    "    print(\"\\n\" + \"=\"*50)\n",
    "    print(f\"PERGUNTA: {pergunta}\")\n",
    "    print(\"=\"*50)\n",
    "    print(resposta)\n",
    "    print(\"=\"*50)\n",
    "    \n",
    "except requests.exceptions.RequestException as e:\n",
    "    logger.error(f\"Erro na requisição: {str(e)}\")\n",
    "except Exception as e:\n",
    "    logger.error(f\"Erro inesperado: {str(e)}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "1df24204-394c-4b7c-8efc-bfb844560926",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.43033326, 0.4853886 , 0.30803415], dtype=float32)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "similaridades"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "dc7f7cfe-62d4-4d6e-b19d-d92cf0bda8f5",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<!-- image -->\n",
      "\n",
      "Boletim de Serviço Eletrônico em 16/08/2024\n",
      "\n",
      "Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DIRETORIA DE PESQUISA E PÓS-GRADUAÇÃO - CAMPUS CURITIBA COORD. PROG.POS-GRAD. EM TECNOLOGIA - CT\n",
      "\n",
      "<!-- image -->\n",
      "\n",
      "## EDITAL Nº 03/2024\n",
      "\n",
      "## EDITAL DE SELEÇÃO PARA INGRESSO EM 2025 NO CURSO DE MESTRADO EM TECNOLOGIA E SOCIEDADE\n",
      "\n",
      "- A Diretora Geral do Câmpus Curitiba da Universidade Tecnológica Federal do Paraná (UTFPR), no uso de suas atribuições, torna público o edital do Processo de Seleção para ingresso no Curso de Mestrado do Programa de Pós-Graduação em Tecnologia e Sociedade em 2025, com área de concentração em Tecnologia e Sociedade, conforme processo definido pelo Colegiado do Programa de Pós-Graduação em Tecnologia e Sociedade (PPGTE), e disposto no Regimento Interno do PPGTE.\n",
      "\n",
      "## 1. DO NÚMERO DE VAGAS\n",
      "\n",
      "- 1.1. Este processo de seleção visa ao preenchimento de até trinta e seis (36) vagas para o curso de mestrado em Tecnologia e Sociedade.\n",
      "- 1.2.  De  acordo  com  a  Resolução  COPPG/UTFPR  nº  68/2021(disponível  em:  https://sei.utfpr.edu.br/sei/publicacoes/controlador\\_publicacoes.php? acao=publicacao\\_visualizar&amp;id\\_documento=2722196&amp;id\\_orgao\\_publicacao=0) e na Instrução Normativa PROPPG/UTFPR nº 21/202 (disponível em: https://sei.utfpr.edu.br/sei/publicacoes/controlador\\_publicacoes.php?acao=publicacao\\_visualizar&amp;id\\_documento=3142622&amp;id\\_orgao\\_publicacao=0)\n",
      "- I. Serão reservadas 30% do total de vagas desta seleção para pessoas autodeclaradas negras;\n",
      "- II. No caso de inscrição de ao menos uma pessoa autodeclarada indígena, serão adicionadas duas (02) vagas ao total descrito no item 1.1 deste edital, e que serão para concorrência exclusiva deste público;\n",
      "- III. No caso de inscrição de ao menos uma pessoa autodeclarada portadora de deficiência (PcD), serão adicionadas duas (02) vagas ao total descrito no item 1.1 deste edital, e que serão para concorrência exclusiva deste público.\n",
      "- 1.3. Os candidatos que optarem pelas cotas concorrerão exclusivamente a estas vagas reservadas.\n",
      "- 1.4.  Caso  haja  sobra  de  vagas  dentre  os  candidatos  de  ampla  concorrência,  estas  poderão  ser  preenchidas,  a  depender  de  decisão  do  PPGTE,  por candidatos que tenham optado pelas vagas reservadas desde que tenham obtido aprovação no processo seletivo.\n",
      "- 1.5. De acordo com a Resolução nº. 079/12-COPPG, de 26 de junho de 2012 da UTFPR, serão disponibilizadas a servidores de Instituições de Ensino Superior Públicas, com as quais a UTFPR tenha convênios específicos para fins de qualificação de pessoal, um adicional de até 20% das vagas ofertadas. Conforme o §2º da referida Resolução, o(a) servidor(a) deverá manifestar interesse nas vagas adicionais no momento da inscrição, inserindo cópia em arquivo PDF de documento comprobatório do convênio, junto aos outros documentos elencados no item 4.1 deste Edital.\n",
      "- 1.6. Os (As) candidatos(as) às vagas reservadas deverão preencher a autodeclaração de identidade conforme modelo do Anexo I deste Edital, anexando-a aos documentos relacionados no item 4 do Edital.\n",
      "\n",
      "## 2. DAS DATAS E PERÍODOS\n",
      "\n",
      "|   Passos | Ação                                                                                                                     | Data ou Período*        |\n",
      "|----------|--------------------------------------------------------------------------------------------------------------------------|-------------------------|\n",
      "|        1 | Inscrições                                                                                                               | 02/09/2024 à 04/10/2024 |\n",
      "|        2 | Divulgação da relação de inscritos(as)                                                                                   | 18/10/2024              |\n",
      "|        3 | Divulgação dos aprovados na Etapa 1: análise da carta de intenção, da proposta de projeto pesquisa e do currículo Lattes | de18/11/2024            |\n",
      "|        4 | Divulgação do resultado final da Etapa convocação para a Etapa 2: Entrevistas.                                           | e Até 22/11/2024        |\n",
      "|        5 | Etapa 2: Entrevistas                                                                                                     | 25/11/2024 à 06/12/2024 |\n",
      "\n",
      "|   6 | Divulgação dos resultados da Etapa 2: Entrevistas                                                                                     | 09/12/2024          |\n",
      "|-----|---------------------------------------------------------------------------------------------------------------------------------------|---------------------|\n",
      "|   7 | Divulgação do resultado final da Etapa 2 e publicação da relação dos(as) candidatos(as)Até aprovados(as) para ingresso na turma 2024. | 19/12/2024          |\n",
      "|   8 | Processo de Matrícula                                                                                                                 | Adefinir pelo PPGTE |\n",
      "\n",
      "- *Para efeitos de prazos, é considerado o fuso horário de Brasília/DF.\n",
      "\n",
      "## 3. DAS ETAPAS DO PROCESSO DE SELEÇÃO\n",
      "\n",
      "O processo inclui uma primeira etapa eliminatória em que se realiza uma análise conjunta da carta de intenção, do projeto de pesquisa e do currículo no formato Lattes, seguida por uma segunda etapa eliminatória e classificatória de entrevista.\n",
      "\n",
      "|   Etapa | Ação                                                                                      | Caráter                             |    |\n",
      "|---------|-------------------------------------------------------------------------------------------|-------------------------------------|----|\n",
      "|       1 | Análise da proposta da carta de intenção, do de pesquisa e do currículo no formato Lattes | projetoEliminatório classificatório | e  |\n",
      "|       2 | Entrevista                                                                                | Eliminatório classificatório        | e  |\n",
      "\n",
      "Mais detalhadamente, o processo tem as seguintes atividades:\n",
      "\n",
      "- 1. Publicação do edital.\n",
      "- 2. Período de Inscrições: preenchimento da ficha de inscrição e envio da documentação via site.\n",
      "- 3. Divulgação e homologação das inscrições recebidas.\n",
      "- 4. Distribuição e avaliação das propostas de projetos de pesquisa, das cartas de intenção e dos currículos no formato Lattes nas linhas de pesquisa.\n",
      "- 5. Divulgação da relação dos(as) selecionados(as) para entrevistas.\n",
      "- 6. Divulgação do cronograma de entrevistas.\n",
      "- 7. Entrevistas .\n",
      "- 8. Homologação pelo Colegiado do PPGTE da relação dos(as) candidatos(as) aprovados(as).\n",
      "- 9. Divulgação da relação dos(as) candidatos(as) aprovados(as) no processo de seleção.\n",
      "- 10. Análise de recursos interpostos (conforme disposto no Item 8 deste Edital).\n",
      "- 11. Processo de Matrícula.\n",
      "\n",
      "## 4. DA INSCRIÇÃO\n",
      "\n",
      "Período de inscrições: de 02 de setembro a 04 de outubro de 2024.\n",
      "\n",
      "## 4.1. Documentação a ser submetida no ato da inscrição:\n",
      "\n",
      "1. Ficha de inscrição: A ficha estará disponível no link para inscrição do mestrado: https://sistemas2.utfpr.edu.br/dpls/sistema/acad01/mpinscricaopg.inicio?p\\_unidcodnr=1&amp;p\\_curscodnr=246&amp;p\\_cursoanonr=2025\n",
      "\n",
      "- - A ficha de inscrição deverá ser preenchida com todas as informações solicitadas.\n",
      "- - Será garantido o uso do nome social em todas as etapas públicas da seleção .\n",
      "- -  No Anexo II deste Edital encontra-se a relação dos (as) docentes do PPGTE que irão ofertar vagas de mestrado e os seus respectivos interesses de pesquisa.\n",
      "- 2. Carta de intenção: A carta de intenção deve seguir o modelo disponível em:\n",
      "\n",
      "https://www.utfpr.edu.br/cursos/coordenacoes/stricto-sensu/ppgte-ct/editais/processo-de-selecao-para-o-mestrado-do-ppgte-ingresso-em2023/carta\\_intencao\\_ppgte\\_2023.docx\n",
      "\n",
      "- 3. Proposta de Projeto de Pesquisa , para fins deste processo de seleção;\n",
      "- a) A proposta de projeto de pesquisa deve seguir o modelo disponível em:\n",
      "\n",
      "https://www.utfpr.edu.br/cursos/coordenacoes/stricto-sensu/ppgte-ct/editais/processo-de-selecao-para-o-mestrado-do-ppgte-ingresso-em2023/proposta\\_projeto\\_ppgte\\_modelo\\_2023.doc b) A redação da proposta do projeto de pesquisa deve seguir as normas da Associação Brasileira de Normas Técnicas (ABNT);\n",
      "\n",
      "- 4. Currículo atualizado no formato Lattes (Modo 'Completo') : O currículo deve ser preenchido na Plataforma Lattes, e em nenhuma hipótese será aceito outro formato ou tipo de currículo.\n",
      "\n",
      "Para os itens 5, 6, 7 e 8 abaixo, de acordo com a Resolução COPPG/UTFPR nº 68/2021(disponível em: https://sei.utfpr.edu.br/sei/publicacoes/controlador\\_publicacoes.php?acao=publicacao\\_visualizar&amp;id\\_documento=2722196&amp;id\\_orgao\\_publicacao=0) e na Instrução Normativa PROPPG/UTFPR nº 21/202 (disponível em: https://sei.utfpr.edu.br/sei/publicacoes/controlador\\_publicacoes.php? acao=publicacao\\_visualizar&amp;id\\_documento=3142622&amp;id\\_orgao\\_publicacao=0, também será necessário:\n",
      "\n",
      "- 5. No momento da inscrição, além dos demais documentos previstos em edital, o candidato que concorrer à(s) vaga(s) prevista(s) para negros (pretos ou pardos) deverá entregar autodeclaração (Anexo I deste Edital) em que se enquadra nesta categoria.\n",
      "- 6.  No  momento  da  inscrição,  além  dos  demais  documentos  previstos  em  edital,  o  candidato  que  concorrer  à(s)  vaga(s)  prevista(s)  para  pessoa  com deficiência deve entregar os seguintes documentos:\n",
      "- I. atestado médico emitido nos últimos 12 (doze) meses ou laudo de deficiência permanente, assinado por um médico especialista na área da deficiência alegada pelo candidato, contendo o grau ou nível de deficiência, o código correspondente à Classificação Internacional de Doença (CID) e um parecer do médico contendo as necessidades específicas, considerando as peculiaridades da deficiência;\n",
      "- II.  exame  de  audiometria  para  candidatos  com  deficiência  auditiva,  realizado  nos  últimos  12  (doze)  meses  e  parecer  específico  com  restrições  e/ou recomendações;\n",
      "\n",
      "III.  exame oftalmológico em que constem a acuidade visual para candidatos com deficiência visual, realizado nos últimos 12 (doze) meses e parecer específico.\n",
      "\n",
      "Parágrafo único. Atestados, exames e laudos médicos deverão obrigatoriamente apresentar CID, nome legível, carimbo e assinatura do profissional e CRM. Ao candidato pode ser solicitado comparecer ante uma Junta Médica Oficial da UTFPR.\n",
      "\n",
      "- 7. Para análise dos documentos previstos no item 6 acima (em seus subitens I, II e III), será constituída uma comissão com profissionais da Área de Medicina da UTFPR.\n",
      "- 8. No momento da inscrição, além dos demais documentos previstos em edital, o candidato que concorrer à(s) vaga(s) prevista(s) para indígenas deve entregar, ao menos um dos seguintes documentos:\n",
      "- I. Cópia do registro administrativo de nascimento indígena (RANI); ou\n",
      "- II. Declaração de pertencimento emitida pelo grupo indígena e assinada pela liderança competente.\n",
      "\n",
      "Parágrafo único. Estes documentos serão avaliados por comissão institucional específica.\n",
      "\n",
      "## 4.2 Organização e Envio da Documentação\n",
      "\n",
      "A ficha de inscrição, o currículo no formato Lattes, a proposta de projeto de pesquisa, a carta de intenção e a autodeclaração de identidade (conforme anexo I,  quando  for  o  caso)  devem  ser  enviados  em  formato  PDF  por  meio  da  seguinte  página:  http://www.utfpr.edu.br/cursos/coordenacoes/strictosensu/ppgte/documentos/formularios . Cada arquivo não pode exceder 10MB.\n",
      "\n",
      "Os respectivos arquivos de inscrição, carta de intenção, currículo e proposta de projeto devem ser nomeados da seguinte maneira:\n",
      "\n",
      "- 1. Devem iniciar com o Identificador do Curso: 'M' para mestrado;\n",
      "\n",
      "Incluir sub traço, traço rasteiro ou underscore (\\_) como separador;\n",
      "\n",
      "- 2. Devem Incluir Prenome e Sobrenome do(a) candidato(a), sem espaços; Incluir sub traço, traço rasteiro ou underscore (\\_) como separador;\n",
      "- 3. Devem Incluir o Dia e o Mês do Nascimento, no formato 'DDMM'; Incluir sub traço, traço rasteiro ou underscore (\\_) como separador;\n",
      "- 4. Devem Incluir Identificador do Arquivo: 'FI' para Ficha de Inscrição, 'CL' para Currículo atualizado no Formato Lattes Completo, \"CA\" para Carta de Intenção; e 'PP' para Proposta de Projeto de Pesquisa.\n",
      "\n",
      "- 5. Devem terminar com o tipo do arquivo '.pdf'\n",
      "\n",
      "## Exemplos :\n",
      "\n",
      "- a. Documentos (FI, CL, PP e CA) do candidato ao mestrado (M) João da Silva Torres, nascido no dia 7 de abril. Os nomes dos arquivos a submeter seriam:\n",
      "\n",
      "## M\\_JoaoTorres\\_0704\\_FI.pdf\n",
      "\n",
      "## M\\_JoaoTorres\\_0704\\_CL.pdf\n",
      "\n",
      "## M\\_JoaoTorres\\_0704\\_PP.pdf\n",
      "\n",
      "## M\\_JoaoTorres\\_0704\\_CA.pdf\n",
      "\n",
      "b. Documentos (FI, CL, PP e CA) da candidata ao mestrado (M) Maria Lopes Alves, nascida no dia 23 de outubro. Os nomes dos arquivos a submeter seriam:\n",
      "\n",
      "## M\\_MariaAlves\\_2310\\_FI.pdf\n",
      "\n",
      "- M\\_MariaAlves\\_2310\\_CL.pdf\n",
      "\n",
      "M\\_MariaAlves\\_2310\\_PP.pdf\n",
      "\n",
      "## M\\_MariaAlves\\_2310\\_CA.pdf\n",
      "\n",
      "## 4.3 Observações Gerais quanto às Inscrições:\n",
      "\n",
      "- 1. Não serão realizadas inscrições no PPGTE ou na Secretaria da Pós-Graduação (DIRPPG-CT);\n",
      "- 2. O não envio da documentação solicitada no ato da inscrição acarretará na eliminação do(a) candidato(a) do processo de seleção;\n",
      "- 3. Não serão permitidas a adição ou a substituição de documentos após o final do período de inscrições e ao longo do processo de seleção;\n",
      "- 4. Ao se inscrever, o(a) candidato(a) aceita os termos constantes do presente edital;\n",
      "- 5.  Candidatos(as) que necessitem de condições especiais para a realização de certas etapas do processo seletivo deverão solicitá-las por meio de um contato direto com a Comissão de Seleção do Programa, por e-mail (selecaoppgte-ct@utfpr.edu.br), impreterivelmente durante o período das inscrições. A realização das etapas previstas no processo de seleção por parte desses (as) candidatos(as) fica condicionada a esta solicitação formal.\n",
      "- 6.  Após  o  processo  seletivo,  como  critério  para  homologação  da  matrícula  no  programa,  além  dos  demais  documentos  [ver  abaixo  item  9.  DA MATRÍCULA],  será  requerido  do  candidato  aprovando,  no  momento  da  matrícula,  um  dos  seguintes  documentos:  diploma  graduação  em  curso reconhecido pela Capes; ou declaração da coordenação do curso (no qual realizou a graduação) que afirma o cumprimento de todos os requisitos para a colação de grau e que a emissão do diploma está em trâmite.\n",
      "\n",
      "## 5. DA CARTA DE INTENÇÃO, DA PROPOSTA DE PROJETO DE PESQUISA E DO CURRÍCULO NO FORMATO LATTES\n",
      "\n",
      "A apreciação e análise da carta de intenção e da proposta do projeto de pesquisa têm caráter eliminatório. A apreciação do currículo no formato Lattes será qualitativa, aderente à linha de pesquisa do PPGTE indicada no ato da inscrição, tomando por base a produção intelectual e suas relações com a experiência acadêmica e/ou profissional, com a participação em iniciativas e projetos de pesquisa, de extensão, educacionais e projetos de popularização do conhecimento, o envolvimento e a organização de eventos e a supervisão de atividades e pessoas. A bibliografia recomendada para este processo seletivo está disponível no Anexo III deste Edital.\n",
      "\n",
      "## 5.1 Da carta de intenção\n",
      "\n",
      "- 1. A redação da carta de intenção deve se limitar aos conteúdos, à formatação, ao tamanho e ao teor especificados no modelo disponível no item 4.1, item 2;\n",
      "- 2. O tamanho do arquivo da carta de intenção não pode superar 10MB.\n",
      "\n",
      "## 5.2 Das características e critérios da avaliação da carta de intenção\n",
      "\n",
      "- 1. A carta de intenção será avaliada por pelo menos dois (duas) docentes do PPGTE;\n",
      "- 2. A carta receberá nota em uma escala de 0,0 (zero) a 10,0 (dez);\n",
      "- 3. Os critérios de avaliação da carta de intenção são:\n",
      "- i. adequação da carta de intenções à proposta de projeto de pesquisa;\n",
      "- ii. articulação entre a experiência acadêmica e/ou profissional e o projeto de pesquisa;\n",
      "- iii. aderência da proposta aos estudos Ciência, Tecnologia e Sociedade (CTS) e articulações às linhas e aos grupos de pesquisa vinculados ao PPGTE;\n",
      "- iv. argumentação e pertinência das produções indicadas aos estudos CTS e articulações às linhas e aos grupos de pesquisa vinculados ao PGTE.\n",
      "\n",
      "Para cada critério será atribuída uma nota entre 0,0 (zero) e 10,0 (dez). A nota final da carta de intenção será obtida pela média aritmética das notas de cada critério.\n",
      "\n",
      "## 5.3 Da proposta de projeto de pesquisa\n",
      "\n",
      "- 1. A proposta de projeto deve ter entre 3.000 e 6.000 palavras, incluindo preâmbulo e seção de referências;\n",
      "- 2. A redação da proposta de projeto de pesquisa deve seguir o estilo de documentação e referências de redação acadêmica recomendadas pela Associação Brasileira de Normas Técnicas (ABNT).\n",
      "- 3. A proposta de projeto de pesquisa deve demonstrar aderência à linha de pesquisa indicada na ficha de inscrição. Deve contextualizar o problema de pesquisa, justificar o recorte do objeto, indicar os procedimentos metodológicos associados aos objetivos e resultados almejados, e discutir eventuais desafios e limitações do projeto.\n",
      "- 4. O tamanho do arquivo da proposta de projeto de pesquisa não pode superar 10MB.\n",
      "\n",
      "## 5.4 Das características e critérios da avaliação da proposta de projeto de pesquisa\n",
      "\n",
      "- 1. A proposta de projeto de pesquisa será avaliada por pelo menos dois(duas) docentes do PPGTE.\n",
      "- 2. A proposta de projeto de pesquisa receberá nota em uma escala de 0,0 (zero) a 10,0 (dez).\n",
      "- 3. Os critérios de avaliação da proposta de projeto de pesquisa são:\n",
      "- i. aderência da proposta aos estudos Ciência, Tecnologia e Sociedade (CTS) no âmbito da(s) linha(s) de pesquisa indicada(s) pelo(a) candidato(a);\n",
      "- ii. consistência e clareza da hipótese ou questão de pesquisa;\n",
      "- iii. problematização da fundamentação teórica;\n",
      "- iv. coerência e exequibilidade na escolha de métodos e técnicas de pesquisa;\n",
      "- v. uso da escrita acadêmica, de normas e estilos.\n",
      "\n",
      "Para cada critério será atribuída uma nota entre 0,0 (zero) e 10,0 (dez). A nota final proposta de projeto de pesquisa será obtida pela média aritmética das notas de cada critério.\n",
      "\n",
      "## 5.5 Da nota final da etapa avaliação da carta de intenção, da proposta de projeto de pesquisa e do currículo no formato Lattes\n",
      "\n",
      "- 1. Serão aprovados(as) nesta etapa os(as) candidatos(as) que obtiverem a nota igual ou superior a 7,0 (sete), em uma escala de 0,0 a 10,0;\n",
      "- 2. A nota resultante desta etapa é obtida pela média ponderada das notas da carta de intenção (peso 3,0) e da proposta de projeto de pesquisa (peso 7,0), conforme a fórmula a seguir:\n",
      "\n",
      "## NOTA = (( NCA *3,0) + ( NPPP *7.0)) / 10.0 , em que:\n",
      "\n",
      "NOTA é a nota da etapa;\n",
      "\n",
      "NCA é a nota da avaliação da carta de intenção; e\n",
      "\n",
      "NPPP é a nota da avaliação da proposta de projeto de pesquisa.\n",
      "\n",
      "## 6. DA ENTREVISTA\n",
      "\n",
      "A entrevista consiste na arguição, pela banca examinadora, e respectiva defesa, pelo(a) candidato(a) acerca da Carta de Intenção e da Proposta de Projeto de Pesquisa enviada a este processo seletivo.\n",
      "\n",
      "A etapa de entrevistas é eliminatória e classificatória.\n",
      "\n",
      "A entrevista será realizada por docentes do PPGTE, por videoconferência, cujas datas e ferramentas serão comunicadas pela banca examinadora através do endereço de e-mail informado pelo candidato em sua ficha de inscrição.\n",
      "\n",
      "## 6.1 Características da entrevista\n",
      "\n",
      "- 1. As entrevistas serão realizadas por videoconferência.\n",
      "- 2.  O não comparecimento à entrevista via videoconferência, na data e horário definidos e publicados no site do PPGTE implica na eliminação do(a) candidato(a) do processo de seleção. O link para as entrevistas será encaminhado via e-mail pelas bancas avaliadoras.\n",
      "- 3. A entrevista será realizada por uma banca constituída por, no mínimo, dois (duas) docentes do PPGTE.\n",
      "- 4. Ao se inscrever no processo de seleção o(a) candidato(a) expressa consentimento livre e esclarecido em ter registrados sua imagem, sua voz, e o ambiente de onde vier a realizar a entrevista, apenas para fins deste processo de seleção, aceitando assim que a entrevista poderá ser gravada, sem caráter\n",
      "\n",
      "- de obrigatoriedade e com a anuência dos(das) envolvidos(as), de modo a comprovar a identidade do(a) candidato e suas respostas à banca.\n",
      "- 5. Caso não seja viável o registro, em vídeo ou áudio, parcial ou completo, da entrevista por parte do PPGTE, o parecer da banca o substitui.\n",
      "- 6. Estes registros serão de acesso restrito à comissão de seleção e permanecerão arquivados até a conclusão do processo de seleção. Findo o processo seletivo, estas gravações serão destruídas.\n",
      "- 7. As gravações não serão divulgadas.\n",
      "- 8. A entrevista está restrita a(o) candidata(o) e aos(às) entrevistadores(as).\n",
      "\n",
      "## 6.2 Dos critérios de avaliação da entrevista\n",
      "\n",
      "A avaliação da entrevista obedece à qualidade da apresentação e das respostas do(a) candidato(a) à arguição da banca, distribuída entre os seguintes critérios:\n",
      "\n",
      "- i. Defesa da carta de intenção e projeto de pesquisa;\n",
      "- ii. Aderência do projeto de pesquisa aos estudos CTS e à(s) linha(s) de pesquisa indicada(s);\n",
      "- iii. Viabilidade de desenvolvimento da proposta do projeto de pesquisa;\n",
      "- iv. Relevância da trajetória profissional e/ou acadêmica e pessoal para o desenvolvimento do projeto de pesquisa.\n",
      "\n",
      "Para cada critério será atribuída uma nota entre 0,0 (zero) e 10,0 (dez). A nota final da entrevista será obtida pela média aritmética das notas de cada critério.\n",
      "\n",
      "Serão aprovados(as) nesta etapa os(as) candidatos(as) que obtiverem a nota igual ou superior a 7,0 (sete), em uma escala de 0,0 a 10,0.\n",
      "\n",
      "## 7. DO RESULTADO FINAL E DA DIVULGAÇÃO DA RELAÇÃO DE APROVADOS(AS)\n",
      "\n",
      "- 7.1 A nota final do(a) candidato(a) neste processo seletivo é composta pela média aritmética das notas obtidas nas Etapas 1 e 2 do processo seletivo.\n",
      "- 7.2 Em caso de empate, a Comissão de Seleção tomará como parâmetro de desempate os seguintes critérios, nesta ordem:\n",
      "- i. Nota da carta de intenção, da proposta de projeto de pesquisa e do currículo no formato Lattes;\n",
      "- ii. Nota da entrevista;\n",
      "- iii. O(a) candidato(a) com maior idade.\n",
      "- 7.3 A lista dos(as) candidatos(as) aprovados(as) para ingresso no PPGTE em 2025, considerando o número de vagas deste processo de seleção, será publicada no site do PPGTE de acordo com o cronograma disposto no item 2 deste Edital.\n",
      "\n",
      "## 8. DA INTERPOSIÇÃO DE RECURSOS\n",
      "\n",
      "- 8.1. A interposição de recursos pode ocorrer até 48 horas após a publicação dos resultados das etapas do processo seletivo;\n",
      "- 8.2.  A  interposição  de  recursos,  fundamentada  e  circunstanciada  nos  termos  e  critérios  do  presente  edital,  deverá  ser  encaminhada  para  o  e-mail selecaoppgte-ct@utfpr.edu.br.\n",
      "- 8.3 Será indeferido preliminarmente o recurso extemporâneo, inconsistente, de intenção distorcida ou referente a questões que não atendam às exigências e especificações estabelecidas neste edital.\n",
      "\n",
      "## 9. DA MATRÍCULA\n",
      "\n",
      "O período específico de matrícula será divulgado pelo PPGTE, conforme item 2 deste Edital. Durante o processo de matrícula é necessário apresentar a seguinte documentação e entregar as respectivas fotocópias, para reconhecimento, conforme a Lei no 13.726, de 2018:\n",
      "\n",
      "- 1. Carteira de identidade;\n",
      "- 2. Cadastro de Pessoa Física (CPF) ou, se estrangeiro, passaporte;\n",
      "- 3. Certidão de nascimento ou casamento;\n",
      "- 4. Diploma de Graduação;\n",
      "- 5. Para a graduação no Brasil, o(a) candidato(a) poderá apresentar, no ato da matrícula, comprovante de diploma de graduação em trâmite, sendo-lhe concedido 12 meses de prazo para a apresentação do diploma. O não cumprimento deste prazo implicará o desligamento do curso.\n",
      "- 6. A não entrega da documentação comprobatória ou o não cumprimento do prazo estipulado para a matrícula implica na perda da vaga.\n",
      "\n",
      "Observações sobre a documentação:\n",
      "\n",
      "- 1. Em atendimento ao Decreto nº 8.660/2016 e ao Regulamentado pela Resolução CNJ nº 228, de 22 de junho de 2016, que promulga a Convenção sobre a  Eliminação  da  Exigência  de  Legalização  de  Documentos  Públicos  Estrangeiros  (Convenção  de  Haia),  elimina-se  a  exigência  de  autenticação  de documentos estrangeiros (diplomas, títulos, históricos escolares, programas de curso e outros) com exceção de selo ou carimbo dado pela autoridade competente do país donde o documento é originário, desde que este seja signatário da referida convenção.\n",
      "\n",
      "- 2.  Para  a  matrícula,  pode  ser  solicitada  a  tradução  dos  documentos  (Diplomas,  Históricos  Escolares  e  outros),  a  ser  feita  por  tradutor  público juramentado, de documentação em língua estrangeira.\n",
      "\n",
      "Observações sobre candidatos(as) estrangeiros(as):\n",
      "\n",
      "- 1. O(A) candidato(a) estrangeiro(a) aprovado(a) é responsável pela obtenção do(s) visto(s) de permanência no Brasil durante a realização do curso de mestrado;  pela  apresentação  de  documentos  comprobatórios  junto  aos  órgãos  pertinentes,  como,  também,  pelo  provimento  de  recursos  para  sua subsistência no país.\n",
      "\n",
      "## 10. DAS INFORMAÇÕES COMPLEMENTARES, DO FORO E DA VIGÊNCIA DESTE EDITAL\n",
      "\n",
      "- 1. Ao se inscrever, o(a) candidato(a) aceita as condições, critérios e normas estabelecidas neste edital, delas não podendo alegar desconhecimento.\n",
      "- 2. É de inteira responsabilidade do(a) candidato(a) o acompanhamento da publicação de todos os atos referentes a este processo seletivo.\n",
      "- 3. As informações prestadas na inscrição são de inteira responsabilidade do(a) candidato(a), dispondo a Comissão de Seleção do direito de cancelar e indeferi-la  sempre  que  se  verifique  que  as  informações  são  incorretas,  incompletas  ou  inverídicas,  implicando  na  não  satisfação  das  condições estabelecidas neste Edital.\n",
      "- 4. O PPGTE não se obriga a preencher todas as vagas ofertadas. O preenchimento das vagas ofertadas neste Processo Seletivo depende do número de candidatos com pontuação final igual ou superior a 7,0 (sete) em cada uma das etapas do processo seletivo.\n",
      "- 5. As atividades acadêmicas do Programa de Pós-Graduação em Tecnologia e Sociedade e do curso de mestrado em Tecnologia e Sociedade, naquilo que concerne  às  disciplinas  obrigatórias,  estão  previstas  de  segunda-feira  a  sexta-feira,  e,  distribuídas  preferencialmente  no  período  matutino.  Outras atividades, inclusive disciplinas, podem ser ofertadas nos períodos vespertino ou noturno, ou mesmo em outros dias da semana, conforme as atividades de pesquisa exigirem.\n",
      "- 6. Os casos omissos neste Edital serão decididos pela Comissão de Pós-Graduação (CPG) do PPGTE.\n",
      "- 7. Estabelece-se como foro para questões relativas a este edital o Foro da Justiça Federal em Curitiba - Seção Judiciária do Paraná.\n",
      "- 8. Este Edital estará vigente a partir da data de sua publicação no site do PPGTE, disponível em http://ppgte.ct.utfpr.edu.br.\n",
      "\n",
      "<!-- image -->\n",
      "\n",
      "Documento assinado eletronicamente por (Document electronically signed by) ELOY FASSI CASAGRANDE JUNIOR PROFESSOR DO MAGISTERIO , SUPERIOR , em (at) 16/08/2024, às 08:31, conforme horário oficial de Brasília (according to official Brasilia-Brazil time), com fundamento no (with legal based on) art. 4º, § 3º, do Decreto nº 10.543, de 13 de novembro de 2020.\n",
      "\n",
      "<!-- image -->\n",
      "\n",
      "<!-- image -->\n",
      "\n",
      "<!-- image -->\n",
      "\n",
      "Documento assinado eletronicamente por (Document electronically signed by) FRANCIS KANASHIRO MENEGHETTI DIRETOR(A) , , em (at) 16/08/2024, às 09:26, conforme horário oficial de Brasília (according to official Brasilia-Brazil time), com fundamento no (with legal based on) art. 4º, § 3º, do Decreto nº 10.543, de 13 de novembro de 2020.\n",
      "\n",
      "Documento assinado eletronicamente por (Document electronically signed by) ROSSANA APARECIDA FINAU DIRETOR(A)-GERAL , , em (at) 16/08/2024, às 09:29, conforme horário oficial de Brasília (according to official Brasilia-Brazil time), com fundamento no (with legal based on) art. 4º, § 3º, do Decreto nº 10.543, de 13 de novembro de 2020.\n",
      "\n",
      "A autenticidade deste documento pode ser conferida no site (The authenticity of this document can be checked on the website) https://sei.utfpr.edu.br/sei/controlador\\_externo.php? acao=documento\\_conferir&amp;id\\_orgao\\_acesso\\_externo=0, informando o código verificador (informing the verification code) 4343635 e o código CRC (and the CRC code) 737D15BE .\n",
      "\n",
      "## ANEXO I\n",
      "\n",
      "## Autodeclaração de Identidade Negra\n",
      "\n",
      "Eu,  \\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_,  RG/Passaporte  n°  \\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_  ,  CPF  n°  \\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_,  declaro  minha identidade negra (preta ou parda), para atender aos critérios de reserva de vagas deste edital do Programa de Pós-Graduação em Tecnologia e Sociedade (PPGTE) da Universidade Tecnológica Federal do Paraná (UTFPR). Declaro estar ciente que em caso de falsidade nesta declaração, estarei passível ao indeferimento da matrícula, e no caso de estar matriculado ou matriculada, ao cancelamento da mesma.\n",
      "\n",
      "Ratifico  serem  verdadeiras  as  informações  prestadas,  estando  ciente  de  que  a  informação  falsa  incorrerá  no Artigo  299  do  Código  Penal  (Falsidade Ideológica). Declaro que estou ciente do Edital de Seleção e que estou de acordo com o seu conteúdo.\n",
      "\n",
      "\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\\_\n",
      "\n",
      "Assinatura\n",
      "\n",
      "## ANEXO II\n",
      "\n",
      "Processo Seletivo 2025 - Linhas de Pesquisa do PPGTE com os(as) Docentes (com os respectivos interesses de pesquisa) que ofertam vagas para o de curso de Mestrado neste Processo Seletivo:\n",
      "\n",
      "| Linha de Pesquisa: Mediações e Culturas   | Linha de Pesquisa: Mediações e Culturas                                                                                                                                                                                                                                                                                                       |\n",
      "|-------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n",
      "| Docentes                                  | Interesses de pesquisa                                                                                                                                                                                                                                                                                                                        |\n",
      "| João Carlos Moraes                        | de Paulo Freire e a formação humana na contemporaneidade. Processos em educação pautados na conscientização, diálogo e emancipação freirianos. Cultura do silêncio e mutismo das diferenças. Infâncias, criança e práticas pedagógicas na perspectiva CTS. Políticas educacionais. Aspectos teórico-epistemológicos da pesquisa em Educação . |\n",
      "| Kando Fukushima                           | História e crítica do design; Intervenções visuais urbanas; Design gráfico, tecnologia e sociedade.                                                                                                                                                                                                                                           |\n",
      "| Leonelo Dell Anhol Almeida                | Acessibilidade e inclusão digital; interação humano- computador e design de interação; sistemas colaborativos e design participativo.                                                                                                                                                                                                         |\n",
      "| Lindsay Jemima Cresto                     | História e teoria do design sob a perspectiva de gênero; estudos de gênero e suas articulações com a tecnologia e a cultura material, com abordagens sobre os interiores domésticos.                                                                                                                                                          |\n",
      "| Luciana Martha Silveira                   | Arte, tecnologia e sociedade; Arte brasileira; Mulheres artistas na arte brasileira; Técnica e tecnologia pictórica na arte brasileira; Cor, tecnologia e sociedade.                                                                                                                                                                          |\n",
      "| Marilia Abrahão Amaral                    | Interação Humano Computador na perspectiva da terceira onda; Interação Humano Computador e feminismos; Informática Inclusiva na Educação Presencial; Informática na Educação & Ciência, Tecnologia e Sociedade; Educação em Informática; Computação e Sociedade.                                                                              |\n",
      "| Marinês Ribeiro dos Santos                | Teoria, história e crítica do design na perspectiva dos estudos feministas e queer ; Cultura material, gênero e espaço doméstico; Cultura material, gênero e raça/etnia.                                                                                                                                                                      |\n",
      "| Nestor Cortez Saavedra Filho              | Disponibilização de Recursos Educacionais em Repositórios Institucionais; Estudos da Ciência de Bruno Latour e o Ensino de Ciências; Educação em Ciências no Antropoceno; Mobilidade Urbana e suas relações com a Educação Básica.                                                                                                            |\n",
      "| Ronaldo de Oliveira Corrêa                | Teoria, História e Crítica do Design; Teorias de Cultura Material; Arquivos, Exposições e Museus.                                                                                                                                                                                                                                             |\n",
      "\n",
      "| Linha de Pesquisa: Tecnologia e Desenvolvimento   | Linha de Pesquisa: Tecnologia e Desenvolvimento                                                                                                                                                                                                                                                                |\n",
      "|---------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n",
      "| Docentes                                          | Interesses de pesquisa                                                                                                                                                                                                                                                                                         |\n",
      "| Alex Calazans                                     | Tecnologia e desenvolvimento sustentável: fundamentos filosóficos. Tecnologia e a cultura da descartabilidade: fundamentos filosóficos. Discussões sobre desenvolvimento tecnológico na História e Filosofia da Ciência e da Tecnologia. Soluções tecnológicas sustentáveis e filosofias dos objetos técnicos. |\n",
      "| Christian Luiz da Silva                           | Políticas Públicas; Desenvolvimento Territorial Sustentável; Cidades e Territórios; Economia Circular e Desenvolvimento                                                                                                                                                                                        |\n",
      "\n",
      "| Décio Estevão do Nascimento   | Políticas Públicas de Ciência, Tecnologia e Inovação; Desenvolvimento Territorial Sustentável; Redes sociotécnicas.                                                                                                                           |\n",
      "|-------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n",
      "| Eloy Fassi Casagrande Junior  | Desenvolvimento Territorial Sustentável, Cidades Sustentáveis, Mobilidade Sustentável, Educação para o Desenvolvimento Sustentável, Energias Renováveis, Ecodesign e Economia Circular e Ecológica. Educação Climática e Mudanças Climáticas; |\n",
      "| Faimara do Rocio Strauhs      | Gestão do Conhecimento Organizacional e Sustentabilidade Territorial. Organizações Sustentáveis.                                                                                                                                              |\n",
      "| Silvestre Labiak Junior       | Habitats de Inovação; Tecnologia e Inovação.                                                                                                                                                                                                  |\n",
      "| Thiago Cavalcante Nascimento  | Transição Sociotécnica para Sustentabilidade. Adoção Transferência de Tecnologia. Habitats de Inovação Empreendedorismo.                                                                                                                      |\n",
      "| Valdir Fernandes              | Ciência, Sociedade e Desenvolvimento; Epistemologia e Interdisciplinaridade; Epistemologia das Ciências da Sustentabilidade; Avaliação de Sustentabilidade. Divulgação Científica.                                                            |\n",
      "\n",
      "| Linha de Pesquisa: Tecnologia e Trabalho   | Linha de Pesquisa: Tecnologia e Trabalho                                                                                                                                                                                                                                                                                                                                                                                                           |\n",
      "|--------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n",
      "| Docentes                                   | Interesses de pesquisa                                                                                                                                                                                                                                                                                                                                                                                                                             |\n",
      "| Andrea Maila Voss Kominek                  | (1) Branquitude Hegemônica e Racismo Epistêmico; (2) Relações Étnico Raciais, Tecnologia e Trabalho; (3) Interseccionalidade e seus efeitos no debate CTS;                                                                                                                                                                                                                                                                                         |\n",
      "| Claudia Nociolini Rebechi                  | Comunicação, trabalho e tecnologia; Discursos, narrativas, prescrições e práticas comunicacionais inerentes às lógicas de gestão e organização do trabalho no capitalismo digital; Trabalho e comunicação no contexto das plataformas digitais e da Inteligência Artificial.                                                                                                                                                                       |\n",
      "| Francis Kanashiro Meneghetti               | Condições e precarização do trabalho no contexto das transformações tecnológicas; Violência e sofrimento no trabalho; Análise crítica das relações entre técnica e trabalho nas organizações; Tecnoburocracia nas organizações.                                                                                                                                                                                                                    |\n",
      "| Geraldo Augusto Pinto                      | Ciência, tecnologia e suas relações com a dependência e o subdesenvolvimento no capitalismo contemporâneo. Divisão internacional do trabalho na indústria das Tecnologias de Informação e Comunicação. Pensamento social crítico latino-americano e o debate em Ciência, Tecnologia e Sociedade. Automação, inteligência artificial e exploração do trabalho. Capitalismo de vigilância. Relações entre trabalho artesanal e tecnologias digitais. |\n",
      "| Tiago Brandão                              | História da Ciência e das Políticas Científicas; Política de Ciência, Tecnologia e Inovação (CTI); Ciência, Tecnologia e Políticas de Desenvolvimento; Estudos Críticos de Inovação; História das Ideias em CTI.                                                                                                                                                                                                                                   |\n",
      "\n",
      "## ANEXO III -DA BIBLIOGRAFIA RECOMENDADA PARA UMA COMPREENSÃO DA ÁREA DE CONCENTRAÇÃO DO PPGTE\n",
      "\n",
      "## III.1 Bibliografia recomendada relacionada à Área de Concentração do PPGTE, Tecnologia e Sociedade\n",
      "\n",
      "FEENBERG, Andrew. Ten Paradoxes of Technology; Techn ē,  v.  14,  n.  1,  p  3-15,  2010.  Disponível  em:  https://www.sfu.ca/~andrewf/paradoxes.pdf. Acesso em: 21 jun. 2018.\n",
      "\n",
      "FEENBERG, Andrew (2010) Do essencialismo ao construtivismo. A filosofia da tecnologia numa encruzilhada. IN: NEDER, Ricardo T. (org) Andrew Feenberg: racionalização democrática, poder e tecnologia. Brasília: Observatório do Movimento pela Tecnologia Social na América Latina/Centro de Desenvolvimento Sustentável - CDS. Ciclo de Conferências Andrew Feenberg. série Cadernos PRIMEIRA VERSÃO: CCTS - Construção Crítica da Tecnologia &amp; Sustentabilidade. Vol. 1. Número 3. 2010. ISSN 2175.2478. pp 246-285 Disponível em https://www.researchgate.net/publication/260983362\\_A\\_Teoria\\_Critica\\_de\\_Andrew\\_Feenberg\\_Racionalizacao\\_Democracia\\_poder\\_e\\_Tecnologia  e  em http://www.sfu.ca/~andrewf/books/Portug\\_Do\\_essencialismo\\_ao\\_construtivismo.pdf Acesso em: 16 de agosto de 2023.\n",
      "\n",
      "LATOUR, Bruno A Collective of Humans and Nonhumans: Following Daedalus's labyrinth. IN: LATOUR, Bruno (1999). Pandora's Hope: Essays on the  reality  of  Science  Studies.  Cambridge,  Massachusetts  and  London,  England,  p.  174-215. Também disponível como LATOUR, Bruno (2001) Um coletivo de humanos e não-humanos: No labirinto de Dédalo. IN: LATOUR, Bruno (1999) A Esperança de Pandora: Ensaios sobre a realidade dos estudos científicos. Bauru, SP: EDUSC Editora da Universidade do Sagrado Coração, pp. 201-246.\n",
      "\n",
      "LIMA JUNIOR, Paulo et al . Marx como referencial para análise de relações entre ciência, tecnologia e sociedade. Ciênc. educ. (Bauru) , Bauru , v. 20, n.  1,  p.  175-194,  mar.  2014  .  Disponível  em  http://www.scielo.br/scielo.php?script=sci\\_arttext&amp;pid=S1516-73132014000100011&amp;lng=pt&amp;nrm=iso. https://doi.org/10.1590/1516-731320140010011. Acesso em: 02 jun. 2020.\n",
      "\n",
      "MBEMBE,  Achille.  Necropolítica. Arte  &amp;  Ensaios,  Revista  do  PPGAV/EBA/UFRJ , n. 32, dezembro  2016,  p.  123-151.  Disponível  em: https://revistas.ufrj.br/index.php/ae/article/view/8993. Acesso em: 24 de jun. 2020.\n",
      "\n",
      "MOURA, Clóvis. Cap. III. Miscigenação e democracia racial: mito e realidade. In: . Sociologia do negro brasileiro . São Paulo: Ática, 1988.\n",
      "\n",
      "PERDOMO REYES, Inmaculada (2016). Género y tecnologías. Ciberfeminismos y construcción de la tecnocultura actual. Revista Iberoamericana de Ciencia, Tecnología y Sociedad -CTS, 11(31),171-193. ISSN: 1668-0030. Disponible en: http://www.scielo.org.ar/scielo.php?pid=S185000132016000100009&amp;script=sci\\_abstract&amp;tlng=pt Acesso em 16 de agosto de 2023.\n",
      "\n",
      "TED  CONFERENCES. Chimamanda  Ngozi  Adichie:  The  danger  of  a single story . , TED  Global  2009. [S.l: s.n.]. Disponível em: http://www.ted.com/talks/chimamanda\\_adichie\\_the\\_danger\\_of\\_a\\_single\\_story. Acesso em: 3 abr. 2014.\n",
      "\n",
      "THOMAS, Hernán. Tecnologías para la inclusión social y políticas públicas en América Latina . Disponível em: https://www.researchgate.net/publication/317356912\\_Tecnologias\\_para\\_la\\_inclusion\\_social\\_y\\_politicas\\_publicas\\_en\\_America\\_Latina Acesso em 16 de agosto de 2023.\n",
      "\n",
      "VESSURI, Hebe. De la transferencia a la creatividad. Polis , v. 1 n. 3, 2002. Disponível em: https://journals.openedition.org/polis/7672 Acesso em 16 de agosto de 2023.\n",
      "\n",
      "WINNER, Langdon. Politics .  Is  there  a  right  to  shape  technology?  Disponível  em:  https://www.langdonwinner.com/technopolis/2017/8/27/is-there-aright-to-shape-technology. Acesso em: 01 jun. 2019.\n",
      "\n",
      "WINNER, Langdon. (1986) Do Artifacts have Politics? IN: WINNER, Langdon (1986) The Whale and the Reactor: A Search for Limits in an Age of High Technology'. Chicago: The University of Chicago Press. p. 19-39. Disponível em português como  Artefatos têm Política? Em http://www.necso.ufrj.br/Trads/Artefatos%20tem%20Politica.htm Acesso em: 10 de junho de 2020.\n",
      "\n",
      "WINNER,  Langdon  (2017) Is  there  a  right  to  shape  technology? IN:  Landon  Winner  on  politics,  technology  and  the  arts.  Disponível  em: https://www.langdonwinner.com/technopolis/2017/8/27/is-there-a-right-to-shape-technology Acesso em 16 de agosto de 2023.\n",
      "\n",
      "## III.2 Bibliografia recomendada relacionada à Linha de Pesquisa MEDIAÇÕES E CULTURAS:\n",
      "\n",
      "ALI, Mustafa. Towards a decolonial computing. In: Ambiguous Technologies :  Philosophical Issues, Practical Solutions, Human Nature, International Society of Ethics and Information Technology, 2014, p. 28-35. Disponível em: https://oro.open.ac.uk/41372/1/Towards%20a%20Decolonial%20Computing%20-%20Syed%20Mustafa%20Ali.pdf\n",
      "\n",
      "ALMEIDA, Eloisa. Arte de luta pela terra. Select Arte Contemporânea .  São Paulo, 02/10/2023. Disponível em: https://select.art.br/arte-de-luta-pelaterra/\n",
      "\n",
      "COUTINHO, F. A.; FIGUEREIDO, K. L.; VIANA, G.M.; RODRIGUES E SILVA, F.A.; DIAS, W.; SANTOS, R.L.J. As Ontologias de um jardim. Contribuições para a educação em humanidades científicas no Antropoceno. Pistas:  Periódico Interdisciplinar ,  v.4,  n.1,  p.  105-119,  fev./jun.  2022. Disponível em: http://periodicos.pucminas.br/index.php/pista/article/view/28809\n",
      "\n",
      "ENTLER, Ronaldo. A fisionomia genérica do crime. Revista Zum ,  junho de 2021. Disponível em: https://revistazum.com.br/colunistas/a-fisionomiagenerica-do-crime/\n",
      "\n",
      "ENTLER,  Ronaldo. Bancos de imagem: generalização, inclusão e representatividade. Revista Zum , setembro de 2021. Recuperado de: https://revistazum.com.br/colunistas/bancos-de-imagem/\n",
      "\n",
      "GADOTTI, Moacir. Extensão universitária : para quê? p. 1-18, 2017. Disponível em: https://www.paulofreire.org/images/pdfs/Extens%C3%A3o\\_Universit%C3%A1ria\\_-\\_Moacir\\_Gadotti\\_fevereiro\\_2017.pdf\n",
      "\n",
      "GIROUX,  Henry.  Paulo  Freire  and  the  politics of postcolonialism. Journal  of  Advanced  Composition , p. 15-26, 1992. Disponível em: https://acervoapi.paulofreire.org/server/api/core/bitstreams/ac585054-091f-4ef0-ba3b-17d1c376e63c/content\n",
      "\n",
      "GOMES, Geovane Ferreira; MORAIS de SOUSA, Cidoval; HAYASHI, Maria Cristina Piumbato Innocentini. Tecnologia e Sociedade: Álvaro Vieira Pinto e a filosofia do desenvolvimento social. Interações , v. 18, n. 2, p 129-144, abr/jun 2017. Disponível em: http://dx.doi.org/10.20435/inter.v18i2.1421\n",
      "\n",
      "KRENAK, Ailton. Ecologia Política. Ethnoscientia , vol. 3, n. 2, ago 2018. Disponível em: https://periodicos.ufpa.br/index.php/ethnoscientia/article/view/10225\n",
      "\n",
      "LIMA,  Nathan  W.  Histórias  plurais  para  a  construção  de  um  mundo  comum:  como  História,  Filosofia  e  Sociologia  das  Ciências  na  Educação  em Ciências podem contribuir para construção do mundo Pós-Pandemia. Revista Brasileira de Ensino de Ciências e Matemática , v. 4, n. 3, p. 1027-1046, 2021. Disponível em: http://seer.upf.br/index.php/rbecm/article/view/12905\n",
      "\n",
      "MENOTTI,  Gabriel.  Inteligência  artificial,  racismo  e  misoginia  na  automatização  da  visão. Revista  Zum , julho de 2019.  Disponível  em: https://revistazum.com.br/radar/inteligencia-artificial-racismo/\n",
      "\n",
      "MONTERO, Maritza. De la otredad a la praxis liberadora: la construcción de métodos para la conciencia. Estudos de Psicologia , Campinas, vol. 32, n. 1, p. 141-149, 2015. Disponível em: https://doi.org/10.1590/0103-166X2015000100013\n",
      "\n",
      "POLLOCK, Griselda. A modernidade e os espaços da feminilidade. In: MACEDO Ana Gabriela; RAYNER, Francesca (orgs.). Género, cultura visual e performance : antologia crítica. Vila Nova de Famalicão: Centro de Estudos Humanísticos da Universidade do Minho; Edições Húmus, 2011, p. 53-67.\n",
      "\n",
      "POZO, Lola Martínez. Códigos corporales y tecnológicos: los feminismos como prácticas hacker. Cadernos Pagu ,  Campinas,  n.  57,  p.  1-35,  2019. Available from http://www.scielo.br/scielo.php?script=sci\\_arttext&amp;pid=S0104-83332019000300502&amp;lng=en&amp;nrm=iso.\n",
      "\n",
      "ROTH, Lorna. Questão de pele: os cartões Shirley e os padrões raciais que regem a indústria visual. Revista Zum .  Junho  de  2016.  Disponível  em: https://revistazum.com.br/revista-zum-10/questao-de-pele/\n",
      "\n",
      "SCHWARCZ, Lilia Moritz. Lendo e agenciando imagens: o rei, a natureza e seus belos naturais. Sociologia &amp; Antropologia , Rio de Janeiro, vol. 4, n. 2, p. 391-431, out 2014 . Disponível em: https://www.scielo.br/j/sant/a/XSKfP5J5QypfvMqdfssR6Jg/?lang=pt\n",
      "\n",
      "SILVEIRA,  Luciana  Martha;  CAMPAGNARO,  Yuri.  A  mídia  digital  na  arte  e  suas  materialidades  em  Diana  Domingues  e  Adrián  Villar  Rojas . Art&amp;Sensorium , v. 8, n. 1, p. 167-185, 2021. Disponível em: https://periodicos.unespar.edu.br/index.php/sensorium/article/view/4065\n",
      "\n",
      "## III.3 Bibliografia recomendada relacionada à Linha de Pesquisa TECNOLOGIA E DESENVOLVIMENTO\n",
      "\n",
      "ANDRADE, T. H. N. Technology and environment: Gilbert Simondon's contributions. Environmental Sciences (UK) , v. 5, p. 7-15, 2008. https://doi.org/10.1080/15693430701628355\n",
      "\n",
      "DIAS, R. Tecnologia e poder: uma interpretação da tecnologia como elemento fundamentalmente político. Rev. Tecnol. Soc. , Curitiba, v. 17, n. 46, p. 5572, jan./mar., 2021. Disponível em: https://periodicos.utfpr.edu.br/rts/article/view/12278.%20DOI:%2010.3895/rts.v17n46.12 278\n",
      "\n",
      "FEENBERG,  Andrew:  Tecnociência  e  a  desreificação  da  natureza. Cadernos  PET-Filosofia  -  UFPR , v.  21,  p.  35-61,  2022.  [Disponível  em: https://revistas.ufpr.br/petfilo/article/view/84365]\n",
      "\n",
      "GEELS,  F.  W.;  KERN,  F.;  CLARK  W.  C.  Sustainability  transitions  in  consumption-production  systems. Proc  Natl  Acad  Sci  U  S  A .  2023  Nov 21;120(47):e2310070120. doi: 10.1073/pnas.2310070120. Epub 2023 Nov 13. PMID: 37956298; PMCID: PMC10666003. https://www.pnas.org/doi/abs/10.1073/pnas.2310070120\n",
      "\n",
      "Labiak, Jr (org). SRI - Sistema Regional de Inovação - Litoral/PR :  do conceito à aplicação, volume 1. Litoral do Paraná: Sebrae: Funespar, 2020. (Disponível para download em: https://comunidadesebrae.com.br/inovacao/sri-litoral-do-parana-livro-do-conceito-a-aplicacao\n",
      "\n",
      "Labiak, Jr (org). SRI - Sistema Regional de Inovação - Litoral/PR :  do conceito à aplicação, volume 2. Litoral do Paraná: Sebrae: Funespar, 2020. (Disponível para download em: https://comunidadesebrae.com.br/inovacao/sri-litoral-do-parana-livro-do-conceito-a-aplicacao\n",
      "\n",
      "LÁRRION, Jósean. Teoría del actor-red. Síntesis y evaluación de la deriva postsocial de Bruno Latour. Revista Espanhola de Sociologia . [S. L.], v. 28, n.2 2019. Disponível em: https://dialnet.unirioja.es/servlet/articulo?codigo=6937355\n",
      "\n",
      "LASTRES, Helena et al. Inovação, território e desenvolvimento : implicações analíticas e normativas do conceito de arranjos e sistemas produtivos e inovativos locais. Redesist, Rio de Janeiro, nov. 2019. Disponível em: https://www.researchgate.net/publication/337362986\\_Inovacao\\_territorio\\_e\\_desenvolvim ento\\_implicacoes\\_analiticas\\_e\\_normativas\\_do\\_conceito\\_de\\_arranjos\\_e\\_sistemas\\_produtiv os\\_e\\_inovativos\\_locais\n",
      "\n",
      "LAW, John. Notes on the theory of  the  actor-network:  ordering,  strategy,  and  heterogeneity. Systems Practices ,  n.  5,  p.  379-393,  1992.  Disponível em:http://www.heterogeneities.net/publications/Law1992NotesOnTheTheoryOfTheActor Network.pdf\n",
      "\n",
      "RAYNAULT, Claude. Um antropólogo  entre  dedicação  científica  e  compromisso  social. Revista  NUPEM ,  Campo  Mourão,  v.  12,  n.  27,  p.  34-61, set./dez. 2020. Disponível em: https://periodicos.unespar.edu.br/index.php/nupem/article/view/5634\n",
      "\n",
      "SILVA, Sandro Dutra e; FERNANDES, Valdir. Humanidades: desencantamento e desafios. Revista NUPEM ,  Campo Mourão, v. 12, n. 27, p. 62-77, set./dez. 2020. Disponível em: https://periodicos.unespar.edu.br/index.php/nupem/article/view/5633/3657\n",
      "\n",
      "VIEIRA,  Paulo  Henrique  Freire.  Do  desenvolvimento  local  ao  ecodesenvolvimento  territorial. Rev.  Internacional  Interdisciplinar  INTERThesis . Florianópolis, v. 10, n. 2, p. 119-141, jul/dez 2013. Disponível em: https://periodicos.ufsc.br/index.php/interthesis/article/view/18071384.2013v10n2p119. DOI: https://doi.org/10.5007/1807-1384.2013v10n2p119\n",
      "\n",
      "## III.4 Bibliografia recomendada relacionada à Linha de Pesquisa TECNOLOGIA E TRABALHO\n",
      "\n",
      "AULER, Décio; DELIZOICOV, Demétrio. Investigação de temas CTS no contexto do pensamento latino- americano . Linhas críticas ,  v. 21, n. 45, p. 275-296, 2015. Disponível em: https://periodicos.unb.br/index.php/linhascriticas/article/view/4525/4133. Acesso em: 13 jun. 2020. https://doi.org/10.26512/lc.v21i45.4525.\n",
      "\n",
      "ANTUNES, Ricardo. Desenhando a nova morfologia do trabalho: as múltiplas formas de degradação do trabalho. Revista Crítica de Ciências Sociais , n.83, p. 19-34, 2008. Disponível em: https://journals.openedition.org/rccs/431. Acesso em: 12 jun. 2020. DOI: https://doi.org/10.4000/rccs.431\n",
      "\n",
      "BRANDÃO, T. A perspectiva do \"sistema\": a matriz tecnocrata das políticas científicas. Ensaios sobre Ciência, Cultura e Política Científica, Centro Nacional  de  Cultura,  p.  28-38,  2020.  Disponível  em:  https://www.cnc.pt/e-book-ensaios-sobre-ciencia-cultura-e-politica-cientifica/.  Acesso:  25  maio 2022.\n",
      "\n",
      "HIRATA, Helena. Gênero, patriarcado, trabalho e classe . Trabalho Necessário , ano 16, n. 29, p. 14-27, 2018. Disponível em https://periodicos.uff.br/trabalhonecessario/article/view/4552. Acesso em: 12 jun. 2020.\n",
      "\n",
      "HUWS,  Úrsula. Mundo  material : o  mito  da  economia  imaterial. Mediações , Londrina,  v.  16,  n.1,  p-24-  54,  Jan./Jun.  2011.  Disponível  em: http://www.uel.br/revistas/uel/index.php/mediacoes/article/view/9650. Acesso em: 12 jun. 2020.\n",
      "\n",
      "LIMA, Betina Stefanello. O labirinto de cristal : as trajetórias das cientistas na Física. Rev. Estud. Fem . [online], v.21, n.3, 2013, p.883-903. Disponível em: https://www.scielo.br/pdf/ref/v21n3/07.pdf. Acesso em: 14/06/2020.\n",
      "\n",
      "MARINI, Ruy Mauro. Dialética da dependência . México: Era, 1990. Disponível em: https://www.marxists.org/portugues/marini/1973/mes/dialetica.htm. Acesso: 06 jun. 2023.\n",
      "\n",
      "NASCIMENTO, Augusto Sávio Guimarães; RODRIGUES, M. F.; NUNES, Albino O. A pertinência do enfoque ciência, tecnologia e sociedade (CTS) na educação profissional e tecnológica . Revista Brasileira da Educação Profissional e Tecnológica ,  v.  2,  n.  11,  p.  117-129,  2016.  Disponível  em: http://www2.ifrn.edu.br/ojs/index.php/RBEPT/article/view/5457/pdf. Acesso em: 02 jun. 20. DOI: https://doi.org/10.15628/rbept.2016.5457 .\n",
      "\n",
      "OLIVEIRA,  M.  B.  de.  O  Inovacionismo  em  Questão. Scientiae  Studia , 9, p. 669-675,  2011.  Disponível  em:  https://doi.org/10.1590/S167831662011000300011. Acesso: 25 maio 2022.\n",
      "\n",
      "PAULANI, Leda Maria. A dependência revisitada: relações de mercado, a fase 4.0 e o caso do Brasil. Revista da Sociedade Brasileira de Economia Política , n. 64, set. / dez. 2022. Disponível em: https://revistasep.org.br/index.php/SEP/article/view/1009. Acesso: 06 jun. 2023.\n",
      "\n",
      "QUEVEDO,  J.;  INVERNIZZI,  N.  O  enfoque  sobre  inovação,  riscos  e  impactos  ELSI  na  retórica  das  políticas  de  nanotecnologia.  CECSPublicações/eBooks, p. 152-175, 2019.\n",
      "\n",
      "https://www.researchgate.net/publication/332865358\\_O\\_enfoque\\_sobre\\_inovacao\\_riscos\\_e\\_impactos\\_ELSI\\_na\\_retorica\\_das\\_politicas\\_de\\_nanotecnologia\n",
      "\n",
      "RAMOS, Marise Nogueira. Políticas e História da Educação Profissional: onde estamos, como chegamos e para onde vamos? Cadernos de Pesquisa , v. 26, n. 4, p. 45-59, 2019. Disponível em: http://www.periodicoseletronicos.ufma.br/index.php/cadernosdepesquisa/article/view/13040/7095. Acesso em: 13 jun. 2020. DOI: http://dx.doi.org/10.18764/2178-2229.v26n4p45-59.\n",
      "\n",
      "SCHIEBINGER, Londa. Expandindo o Kit de Ferramentas Agnotológicas: Métodos de Análise de Sexo e Gênero. Revista Feminismos (online), v.2 n.3, 2014, p, 85-103. Disponível em: https://portalseer.ufba.br/index.php/feminismos/article/view/30035/17767. Acesso em: 14/06/2020.\n",
      "\n",
      "Referência: Processo nº 23064.029474/2024-70\n",
      "\n",
      "SEI nº 4343635\n"
     ]
    },
    {
     "ename": "AttributeError",
     "evalue": "'DoclingDocument' object has no attribute 'get_tables'",
     "output_type": "error",
     "traceback": [
      "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
      "\u001b[31mAttributeError\u001b[39m                            Traceback (most recent call last)",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[43]\u001b[39m\u001b[32m, line 9\u001b[39m\n\u001b[32m      6\u001b[39m json_data = resultado.document.export_to_dict()\n\u001b[32m      8\u001b[39m \u001b[38;5;66;03m# Ver tabelas\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m9\u001b[39m tabelas = \u001b[43mresultado\u001b[49m\u001b[43m.\u001b[49m\u001b[43mdocument\u001b[49m\u001b[43m.\u001b[49m\u001b[43mget_tables\u001b[49m()\n\u001b[32m     10\u001b[39m \u001b[38;5;28mprint\u001b[39m(tabelas)\n",
      "\u001b[36mFile \u001b[39m\u001b[32m~/Programas/python_env/lib/python3.13/site-packages/pydantic/main.py:991\u001b[39m, in \u001b[36mBaseModel.__getattr__\u001b[39m\u001b[34m(self, item)\u001b[39m\n\u001b[32m    988\u001b[39m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m().\u001b[34m__getattribute__\u001b[39m(item)  \u001b[38;5;66;03m# Raises AttributeError if appropriate\u001b[39;00m\n\u001b[32m    989\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m    990\u001b[39m     \u001b[38;5;66;03m# this is the current error\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m991\u001b[39m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m(\u001b[33mf\u001b[39m\u001b[33m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mtype\u001b[39m(\u001b[38;5;28mself\u001b[39m).\u001b[34m__name__\u001b[39m\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[33m object has no attribute \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mitem\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[33m'\u001b[39m)\n",
      "\u001b[31mAttributeError\u001b[39m: 'DoclingDocument' object has no attribute 'get_tables'"
     ]
    }
   ],
   "source": [
    "# Exportar como Markdown (texto estruturado com títulos e listas)\n",
    "markdown = resultado.document.export_to_markdown()\n",
    "print(markdown)\n",
    "\n",
    "# Exportar como dicionário (JSON)\n",
    "json_data = resultado.document.export_to_dict()\n",
    "\n",
    "\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
